关于sizeof()的学习,自己确实花了不少功夫,对于sizeof()的用法也有了一定的认识,今天遇到一位神题,我估计大家也会做错。。。切入正题吧:
-
#include <stdio.h>
-
-
int main()
-
{
-
if(sizeof(int) - sizeof(double) < 0)
-
{
-
printf("<\n");
-
}
-
else
-
{
-
printf(">=\n");
-
}
-
-
return 0;
-
}
求以上程序的输出结果,我们知道sizeof(int) = 4, sizeof(double) = 8, 则4 -8 = -4 ,则if(
sizeof(int) - sizeof(double) < 0)的条件为真,所以,输出应该是打印出“<”,程序运行的结果如下:
发现和预期的结果相反,究其原因,原来sizeof()的返回值是一个无符号整型十进制数值,即:unsigend int 型,所以两个
unsigend int型的数据进行运算后其结果只能是
unsigend int型的,即大于等于0的一个整数值,所以,if()条件不满足,执行下一条语句。这个错误比较隐蔽,很容易出错,今天遇到了在此做一个记录,以便以后的复习。
阅读(20345) | 评论(1) | 转发(0) |