C语言 3 道面试题,不会还敢说你C学的好?带详解
关于整数类型存储的面试问题
以下三个问题大家可以先独立思考一下,看看如果真的面试官问你,你能不能正确的回答并清晰的讲出其中的原理。
问题 1
请问,printf 函数会打印出什么内容?并解释原因。
char a = -1; |
a = -1, b = -1, c = 255 |
signed char 与 char 表示同一种类型,原理一样
问题 2
请问,printf 函数会打印出什么内容?并解释原因。
char a = -128; printf("%u\n", a); |
4294967168 |
你想到了吗?
我们还是按照上面的思路分析:
问题 3
请问,printf 函数会打印出什么内容?并解释原因。
char a = 128; printf("%u\n", a); |
4294967168 |
神奇吗?并不神奇。
原因就在于“截断”时得到的二进制序列是一模一样的,后面的操做是相同的。
另外说一句,char 的范围是 -128 ~ 127,所以上面的 char 型变量 a 溢出了。
试着想想下面的 printf 函数又会输出什么呢?
unsigned char a = -128; |
推荐阅读:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HExLL-迷雾日志!