首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求教一个小的移位有关问题

2012-10-13 
求教一个小的移位问题int main(void){int a 1int b 8printf(%d\n, a1)printf(%d\n, b1)re

求教一个小的移位问题
int main(void)
{
  int a = 1;
  int b = 8;
  printf("%d\n", a<<1);
  printf("%d\n", b>>1);

  return 0;
}

请问一下大侠们,为什么在我电脑上运行结果是1和8?不是2和4吗?

[解决办法]
楼主使用的是什么编译器
程序没问题
[解决办法]

探讨
int main(void)
{
int a = 1;
int b = 8;
printf("%d\n", a<<1);
printf("%d\n", b>>1);

return 0;
}

请问一下大侠们,为什么在我电脑上运行结果是1和8?不是2和4吗?

[解决办法]
http://codepad.org/8PzsUcS3

结果2,4
[解决办法]
不知道你用的是什么编译器,有些直接移位结果是不会保存在操作数中的,你要找个变量去保存才行
[解决办法]
8楼说的比较在理,我在windows下用gcc编译执行后得到的是2 和 4
用wintc编译得到的结果也是2 和 4,并未出现1 和 8的结果
在linux下用GCC得到的结果还是2 和 4
[解决办法]
lz,你的代码重新编译过没有?

热点排行