本文系转载:原文出处为 http://blog.csdn.net/max_min_go/article/details/10056955

不多说,说了都是累赘!直接看代码吧!
有兴趣的可以先猜猜结果是啥,然后再运行下,看看结果是不是和自己想的一样? 其中的道理又是什么呢?
gcc 下如行结果如下:
the bug is out!
所定义的值是unsigned int 类型(因为sizeof()返回类型是无符号的),if 语句在有符号和无符号之间测试相等性,所以将d升级为无符号(unsigned int )类型,-1转换成 unsigned int 的结果是一个非常巨大的正整数的,致使表达式为假,所以要想结果正确,先得强转类型。
对无符号的建议;

1 尽量不要在代码中使用无符号类型,以免增加不必要的复杂性,尤其是仅仅因为无符号数不存在负值而用它来表示

2 尽量使用int这样有符号类型,这样在涉及升级混合类型的复杂细节时,不必担心边界情况(-1 翻译成非常大的整数)

3 只有在使用位段和二进制掩码时,才使用无符号数。而且应该在表达式中使用强制类型转换,使操作数均为

有符号数或者无符号数,这样不必由编译器来选择结果的类型

小心c语言中的无符号类型-尤其是涉及到大小比较相关推荐

  1. c语言中的无符号字符指什么,深入分析C语言中的有符号和无符号

    有符号和无符号指的是数字那么有符号和无符号的区别是什么,我们这里一起来看在C语言中的有符号和无符号分析吧,希望这篇文章能够对各位有用. 就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我 ...

  2. c语言中的无符号字节,C语言之有符号数和无符号数

    我们知道,在C语言中存在无符号数和有符号数(一些高级语言如Java里面是没有无符号数的),但是对于计算机而言,其本身并不区别有符号数和无符号数,因为在计算机里面都是0或者1,但是在我们的实际使用中有时 ...

  3. C++中含有无符号类型的表达式——有符号数与无符号数相加

    首先,明确一个概念,什么是有符号数,什么是无符号数.以整型为例,int 类型的既可以表示正整数,又可以表示负整数,所以是有符号数.unsigned  int 只可以表示正整数,所以成类似的数为无符号数 ...

  4. C语言中的有符号与无符号(挖坑)

    1.计算机中的符号位,计算机如何表示正数和负数? 数据类型的最高位用于标识数据的符号 最高位为1,表明这个数为负数 最高位为0,表明这个数为正数 2.有符号数的表示法 在计算机内部用补码表示有符号数 ...

  5. C语言 有符号类型转换为无符号类型

    C语言中变量的类型变换比较多,有些地方需要时刻注意,不然很可能写出带有bug的代码并深埋入系统,难以察觉. 例如 有符号类型和无符号类型运算,有符号类型转换为无符号类型. 需要注意的有两种情况: 1. ...

  6. java 无符号 类型_java中符号类型和无符号类型的问题分析

    一 参考博文 二 java中的无符号数和有符号数 在计算机中,可以区分正负的类型,称为有符号类型,无正负的类型,称为无符号类型. 使用二进制中的最高位表示正负 计算机中用补码表示数值:另外,用二进制的 ...

  7. C语言中的有符号数和无符号数之间转换

    C语言中的有符号数和无符号数之间转换 我们都知道C语言中有有符号数和无符号数两种整数表示方法,并且支持相互转换. 那么具体相互转换有什么规则,我们今天来了解一下: 在C语言中当声明一个像12345或0 ...

  8. 有符号类型和无符号类型

    负数在计算机中如何表示呢? 1.是否需要有正负. 如果这个量不会有负值,那么我们可以使用无正负的类型. 分正负的类型,称为有符号类型:无正负的类型(只有正值),称为无符号类型. 2.使用二制数中的最高 ...

  9. c语言弱符号与函数指针,浅谈C语言中的强符号、弱符号、强引用和弱引用【转】...

    首先我表示很悲剧,在看<程序员的自我修养--链接.装载与库>之前我竟不知道C有强符号.弱符号.强引用和弱引用.在看到3.5.5节弱符号和强符号时,我感觉有些困惑,所以写下此篇,希望能和同样 ...

最新文章

  1. 多选月份的日期选择器_GitHub - ylmyg/SelectionTime: Android下日期选择器,支持范围选择、多选、单选、根据输入天数选择日期...
  2. Java easycms 版本2.0发布
  3. [LCP28] 采购方案
  4. python如何把一张图像的所有像素点的值都显示出来_情人节,教你用 Python 向女神表白...
  5. python怎么用split字符串全部分开_请教一下python怎么用split对一句话拆分两次?...
  6. 《集体智慧编程》读书笔记2
  7. 喜欢的数字:使用一个字典来_数字证书:何时何地使用它们
  8. python虚拟环境--virtualenv
  9. 黑马程序员视频-微信小程序-原生框架——项目搭建
  10. php通用查询系统excel,php+excel通用课表查询系统
  11. 收藏!这10部关于数学的顶级纪录片,告诉孩子数学跟枯燥不沾边!
  12. 如何下载安装 Visual Studio2010
  13. TBODY标签有什么作用
  14. 社区发现(社团检测)模块度Modularity详细介绍
  15. C# 景深融合软件(opencvsharp开源库)
  16. 运维开发面试题集锦(25k-35k)
  17. 推荐一本网络科学入门书
  18. php继电器信号,中间继电器是将 信号变成 信号的继电器,主要起中间转换作用,其输入为线圈的 和 ,输出信号是触点的断开和闭合。它可将输出信号同时传给几个控制元件或回路。...
  19. java将异常写到text,java捕获异常信息存入txt文件示例
  20. vue渲染.md文件

热门文章

  1. vue吸管拾色器、利用canvas获取坐标点颜色、canvas获取坐标点颜色图片跨域、图片转base64、colorPicker
  2. 大一学生作品《前端框架开发技术》 期末网页制作 HTML+CSS+JavaScript 个人主页网页设计实例
  3. 【医学成像】超声成像中的分辨率
  4. Win10系统中MySQL5.7的安装
  5. 如何定位硬盘物理位置
  6. 【云扩RPA】Table
  7. 国际域名缩写____各个国家
  8. idea连接mysql数据库下载驱动失败
  9. shopee数据分析:虾皮卖家如何正确分析shopee卖场数据?
  10. Halcon算子说明