Chinaunix首页 | 论坛 | 博客
  • 博客访问: 552901
  • 博文数量: 181
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1498
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-22 15:17
个人简介

用发呆的时间来理清自己的思绪

文章存档

2015年(7)

2014年(134)

2013年(40)

分类: C/C++

2014-05-20 20:47:20

      关于sizeof()的学习,自己确实花了不少功夫,对于sizeof()的用法也有了一定的认识,今天遇到一位神题,我估计大家也会做错。。。切入正题吧:

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     if(sizeof(int) - sizeof(double) < 0)
  5.     {
  6.         printf("<\n");
  7.     }
  8.     else
  9.     {
  10.         printf(">=\n");
  11.     }

  12.     return 0;
  13. }
       求以上程序的输出结果,我们知道sizeof(int) = 4, sizeof(double) =  8, 则4 -8 = -4 ,则if(sizeof(int) - sizeof(double) < 0)的条件为真,所以,输出应该是打印出“<”,程序运行的结果如下:

点击(此处)折叠或打开

  1. >=
      发现和预期的结果相反,究其原因,原来sizeof()的返回值是一个无符号整型十进制数值,即:unsigend int 型,所以两个unsigend int型的数据进行运算后其结果只能是unsigend int型的,即大于等于0的一个整数值,所以,if()条件不满足,执行下一条语句。这个错误比较隐蔽,很容易出错,今天遇到了在此做一个记录,以便以后的复习。


阅读(20385) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

JamesBlue2018-03-06 22:16:34

666