避免使用无符号数
来源:互联网 发布:深入浅出sql 编辑:程序博客网 时间:2024/06/14 12:20
考察这样一段代码:
int a = -1;unsigned int b = 1;if (a < b) printf("a < b\n");else printf("a > b\n");
a是有符号整数,b是无符号整数。C语言在比较他们的大小时会进行隐式类型转换。如果执行的是 if ((unsigned int)a < b)
则-1被转换成4294967295,结果是a > b;如果执行的是 if (a < (int)b)
则结果是a < b。采取哪种方式依赖于编译器。
在g++中,输出的结果是a > b。当然,也会打出警告:warning: comparison between signed and unsigned integer expressions
为了避免这个问题,我们通常的做法是 if (a < (int)b)
但是,如果b大与32有符号整数的最大值2147483647,就会发生数据溢出,(int)b将会是一个负值。
因此,避免在程序中使用无符号数!!!
阅读全文
0 0
- 避免使用无符号数
- 注意无符号数
- 无符号数处理
- 无符号数加减乘除
- 无符号数
- 无符号数tips
- Java无符号数
- 无符号数加减
- 有符号数和无符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 有符号数和无符号数
- 无符号数和有符号数
- 无符号数与有符号数
- 有符号数和无符号数
- 有符号数 、无符号数 浅析
- 有符号数与无符号数
- 【ZZULIOJ 2180】GJJ的日常之沉迷数学 【逆元 or 矩阵快速幂】
- 抓取rabbitmq的queues列表
- Spring自动注入装配Bean详细解释
- 关于NGUI中UI遮挡特效问题
- 【练习赛补题】poj 3026 Borg Maze 【bfs+最小生成树】【坑~】
- 避免使用无符号数
- 虚拟机中Linux(Ubuntu16.04)与本地Win7共享文件夹
- 粘包/拆包问题
- tf.random_normal
- Tab 选项卡
- 最长公共子串(一步步优化)
- hibernate 第一天
- 51Nod-1012-最小公倍数LCM
- 软考上午题难点5分钟攻克系列(六)