![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言错题笔记
i 可不简单
知识的海洋里\n我竟只是条淡水鱼。
展开
-
【C语言错题笔记】
易知代码是将-1、-2、-3、... 、-1000逐个装入数组arr中,但是应当注意数组的类型是char(字符数组),而char的数值存储范围是-128~127,因此-128以后的数字装入数组中时会发生某些改变。同理,接下来是126、125 、 124 ...... 、1 、0 、-1、-2 、-3........,根据ASCLL表可知,ASCLL码值0对应的字符是 ‘\0’,当函数strlen读取到0时就会停止,1~128~0 总共255个数(0不计在内),因此最终的输出结果是255。原创 2023-10-16 14:04:24 · 28 阅读 · 0 评论 -
【C语言错题笔记】
i是一个无符号数,所以只能表示非负数,永远也不可能小于0,进而陷入打印的死循环。至于为什么后边打印非常的的数是因为0 - 1回向前借位,然后二进制变成11111111 11111111 11111111 11111111,即4294967295。结果:打印完9 8 7 6 5 4 3 2 1 0 后死循环。原创 2023-10-16 10:55:22 · 51 阅读 · 0 评论 -
【C语言错题笔记】
2、-128存入a中发生截断,变为10000000。打印时,发生整形提升,由于char是有符号型,补充原符号位,变成111111111111111111111111100000000(补码),由于打印类型是%u,此时编译器认为这是一个无符号数,那么补码反码原码相同,直接输出,转化为十进制为4294967168。3、补位时,看原来的类型(有符号char),不要被%u影响以为补充0。%u在最终的打印阶段发挥作用。1、%u意思是打印十进制无符号整数。原创 2023-10-04 17:53:15 · 59 阅读 · 1 评论 -
【C语言错题笔记】
请问a,b,c的输出结果分别是什么原创 2023-10-04 17:11:59 · 47 阅读 · 1 评论