#include <stdio.h>
int main()
{
unsigned int value1, value2;
unsigned int num ;
/*使用变量表示位移量*/
num = 32;
value1 = 0xffffffff < < num;
printf("value1 = %x\n", value1);
/*使用常数表示位移量*/
value2 = 0xffffffff < < 32;
printf("value2 = %x\n", value2);
return 0;
}
但是输出结果确却是:
value1 = ffffffff
value2 = 0
我是在linux下使用gcc 4.4.1编译运行这段代码,int是32位。我预想的是value1和value2结果都应该时0才对,为什么value1是ffffffff而value2是0?
另外补充一下:上面的结果是在代码在编译时不开优化选项得到的,但是在编译时开启-O1,-O2或者-O3情况下,输出结果是:
value1 = 0
value2 = 0
LCC输出是
value1 =ffffffff
value2 =ffffffff
移位运算的右操作数不要超过或等于左操作数经过类型提升后的长度,否则其行为是未定义的:
飞流的正确答案
相关问答:
我现在要些一个fortran调用C接口的问题,但是不知道 C语言里面分配的指针怎么付给fortran,又不能在fortran立马先分配好,业务上不允许。
我写了个测试的例子。但是不行。
test.c
#include <stdio.h>
#incl ......
SHIFT加F10与那个键右ctrl边上的那个键功能一样,想屏这个
但不知要怎么写那个组合键!
有没哪个大侠放一段这个的代码或写一段
http://topic.csdn.net/u/20090609/15/7dc9fb70-243f-4070-9cfd-34e48b66e6c6.html
......
两个文件1.PC,1.inc
1.PC有操作oracle数据库的 ,1.inc也有操作oracle数据库
在其他数据中如informix 中$include 1.inc就可以使用了
在ORACLE数据库重 $include 1.inc不可用 EXEC SQL include 1.inc也不可 ......
如何用C画图,能否编一个具体的 。
#include <conio.h>
#include <stdio.h>
int main()
{
int i;
char *s[]={"BLACK","BLUE","GREEN","CYAN","RE ......
本人正在用Java做一个C/S架构的项目,
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......