分享

<< ,>> 右移,左移符号的右操作数限制

 贫穷的小悍马 2013-05-30
int test = 0x78;
test = test<<32;
printf("test = %d\n", test);  //假设sizeof(int)=32

在vc编译器里,当左移右移的右操作数大于等于左操作数类型bits时,把这种操作定以为  移动的位数等于右操作数对左操作数类型bits的余数。
即在例中,相当于左移了0位。。。 <<33相当于左移了1位。。

但是在C标准里,<<32的行为是未定义的。

///////////////////////////////////////////////////////////////////////

32bit的东西,最多只能做31位的左移……
超出31位的话,是未定义行为,编译器爱让结果等于什么就等于什么,你我都管不着,这是规定……

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多