%d和%u的区别
unsigned int dwValue;
printf(“%d”, dwValue);
在dwValue的值大于0x7FFFFFFF时,输出的结果会变成负数。
正确的程序应该为:
printf(“%u”, dwValue);
无符号整数相减的话永远不可能产生一个负数 所以不能有以下代码
unsigned int a = 6;
unsigned int b = 7;
unsigned int c = a-b;
if(c< 0)
printf("%d",c);
该代码中a-b不可能是一个负数,所以该判断条件永远进不去,另外,如果写成a-b>0的话,该循环能进去 打印输出的却是-1(编译环境为vs2008). 正确应该是用printf(“%u”,c),输出的结果是0xffffffff.