Unsigned int 能存储负数?
来源:互联网 发布:python reduce 函数 编辑:程序博客网 时间:2024/05/17 07:53
今天在看《C程序设计语言》的时候写了如下一段代码
int main(void) { unsigned int a = -20; printf("%d", a); return EXIT_SUCCESS; }
Console: -20
理论上a声明为unsigned int后不应该能显示正确的值,这里之所以能显示-20是由于在printf的格式化参数中使用了%d, 该函数会首先将a转化为int类型。
如果你对编译器的越界处理有所了解的话,应该知道这时候一般情况下,a所表示的值为4294967276(在32位机器中,int用32位bit来表示,无符号int所能表示的最大数为4294967296)
说说我所理解的编译器对上述代码的处理:
1. -20为int类型,第2行赋值语句将它强行转化为unsigned int类型, 越界,因为unsigned int和int在内存中存储的位数是一样的,因此两者在物理内存中是完全一样的。
2. 第3行printf遇到%d占位符时,即认为此处应显示一个int类型值, 于是将a又转化为int类型,所以此时显示出来的结果跟原来赋值是一样的
要想显示无符号整型值,需要使用%u占位符
0 0
- Unsigned int 能存储负数?
- Unsigned int 能存储负数?
- mysql int unsigned负数问题
- unsigned int负数表示和验证
- unsigned long unsigned int unsigned
- unsigned char, unsigned int
- unsigned int
- unsigned int
- int+unsigned
- unsigned int 和int
- unsigned int 与 int
- unsigned int与int
- int 和 unsigned int
- 用表达式来表示int 和 unsigned int 所能表示的最大值
- unsigned int mysql中的unsigned
- unsigned 既为非负数
- 存储负数
- 负数存储
- java读取(正则表达式分析)网页内容
- 字符设备驱动1
- jsp命令行页面-执行shell
- grep 命令
- Android OTA 升级之三:生成recovery.img
- Unsigned int 能存储负数?
- 网站建设运营常见的三个误区解读
- Mysql
- Eclipse10个最有用的快捷键
- 使用mysql-proxy 快速实现mysql 集群 读写分离
- Cloud Computing
- DEV Gridcontrol 查询得到0条记录时显示自定义的字符提示/显示
- python 好的学习博客
- Android OTA 升级之四:进入根文件系统