C语言 3 道面试题,不会还敢说你C学的好?带详解

码字不易,对你有帮助 点赞👍/转发↪️/关注 👀 支持一下作者

微信搜公众号:不会编程的程序圆

看更多干货,获取第一时间更新

 

关于整数类型存储的面试问题

以下三个问题大家可以先独立思考一下,看看如果真的面试官问你,你能不能正确的回答并清晰的讲出其中的原理。

 

问题 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);

推荐阅读:

给你三个必须要学C语言的理由!

 

以上就是本次的内容。

如果文章有错误欢迎指正和补充,感谢!

最后,如果你还有什么问题或者想知道到的,可以 在评论区/私信 告诉我呦,我可以在后面的文章加上你的真知灼见👁。

关注我,看更多干货!

我是程序圆,我们下次再见。🍂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章