Sizeof取的长度小于负数?
来源:互联网 发布:美元霸主地位知乎 编辑:程序博客网 时间:2024/05/21 22:22
char array[10]="ABCDEFG";int len=sizeof(array);int num=-1;if(len<num)cout<<"Ture";
一般认为sizeof取长会是一个正整数,但是和一个负数比较,运行结果是“Ture”。why?
因为sizeof的返回值是size_t型,同于unsigned int。
当与一个signed int 做比较的同时,signed int会做隐式的类型转换,
也就是说上面的num在比较的同时变成了一个比较大的unsigned int,所以才会为真。
为什么会变成一个较大的数? 是因为把二进制表示的符号位当作最高位了。
1 0
- Sizeof取的长度小于负数?
- strlen和sizeof取字符串长度的区别
- 长度小于3的正整数
- 负数的取模运算
- 负数的取模运算
- 负数的取模运算
- 负数的取模运算
- 负数的取模运算
- 计算素数小于非负数的数目,n。
- sizeof 计算出数组的长度
- sizeof 计算出数组的长度
- sizeof(CString)的长度
- sizeof计算类的长度
- 关于补码取负数的证明
- 关于负数取模的问题
- 含有负数的取模运算
- php取模为负数的问题
- 【转】负数的取模运算
- hdu 5317 RGCDQ(dp)
- 第十六周阅读程序-6
- Java override与overload
- Qt中添加背景图片
- 大数据知识(1)--zookeeper原理
- Sizeof取的长度小于负数?
- 单例模式
- Zookeeper02 - Zookeeper的数据模型
- LaTeX命令速查手册1
- 20条正则表达式
- RGB Bayer Color分析
- 两个Activity跳转调用的方法
- 内存泄漏 OOM
- 阿斯大法