C语言零开头
发布时间: 2025-06-16 18:12:47
⑴ C语言无符号数为什么取值范围0开头
首先这里是无符号和有符号之间的区别,
在这里我们将他们实现为二进制后,
楼主你会更好的理解他们之间的区别,
而且这部分的题目是面试题常考的
int
a
=
-400;
在这里a被定义成了一个有符号的整数,
且值为-400;
在计算机中的二进制为
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1110
0111
0000
有符号的解释出来的值为-400,
但是无符号解释出来的值却不同
而printf(“a=%u\n”,a);
很明显这里是要将a按无符号的形式输出(%u)
所以要将a按无符号的形式解释
即将
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1110
0111
0000
解释成无符号的形式
就a值就变成了4294966896
书上解释说使用%u格式控制字符串输出正整数时该数不发生变化,输出负整数时该负整数将被转换为无符号整数输出。
现在这句话的意思已经很明显,
就在计算机中一个数字最终是以二进制存在,
不会改变
但是,
我们可以用有符号或者是无符号的形式去解释他
PS:若有不明白的地方,
可以追问
楼主,
具体方面的原理可以看<<深入理解计算机系统>>中第2章方面的知识,
不需要前缀知识,
直接看就行了。
热点内容