1 #include <iostream>
2 using namespace std;
3
4 int main()
5 {
6 int i = 10, d = 32;
7
8 printf("%d\n", i >> d);
9
10 return 0;
11 }
12
q里输出仍然?0。一直不理解Z么是q样Q正常理解输出是0才对。后来到|上查阅了一下,原来在C99标准中规定如果移位操作的位数大于{于位宽那么l果是未定义的。这句话居然在K & R的著作中有提到Q实在是牛?br> q段代码实际执行的时候,据说g会自动对字长取模Q因此可以认为值没有改变。当Ӟ如果换一U写法:
#include <iostream>
using namespace std;
int main()
{
int i = 10 >> 32;
printf("%d\n", i);
return 0;
}
q样输出是零了Q但是有~译警告Q看来编译器的想法和一般的x是一LQ呵c?br>

]]>