码字不易,对你有帮助 点赞👍/转发↪️/关注 👀 支持一下作者
微信搜公众号:不会编程的程序圆
看更多干货,获取第一时间更新
关于整数类型存储的面试问题
以下三个问题大家可以先独立思考一下,看看如果真的面试官问你,你能不能正确的回答并清晰的讲出其中的原理。
问题 1
请问,printf 函数会打印出什么内容?并解释原因。
char a = -1;
signed char b = -1;
unsigned char c = -1;
printf("a = %d, b = %d, c = %d\n", a, b, c);
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;
unsigned char b = 128;
printf("a = %u, b = %u\n", a, b);
推荐阅读:
以上就是本次的内容。
如果文章有错误欢迎指正和补充,感谢!
最后,如果你还有什么问题或者想知道到的,可以 在评论区/私信 告诉我呦,我可以在后面的文章加上你的真知灼见👁。
关注我,看更多干货!
我是程序圆,我们下次再见。🍂