C语言迷惑行为有哪些
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"C语言迷惑行为有哪些",在日常操作中,相信很多人在C语言迷惑行为有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言迷惑行为有哪些"的疑惑有所帮
千家信息网最后更新 2026年11月03日C语言迷惑行为有哪些
这篇文章主要介绍"C语言迷惑行为有哪些",在日常操作中,相信很多人在C语言迷惑行为有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言迷惑行为有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
代码0:
#includeint main(void) { int c = 5; switch(c) { case 0 ... 10: printf("0-->10\n"); break; case 11 ... 20: printf("11-->20\n"); break; default: printf("other\n"); } return 0; }
输出结果:
0-->10
以上特性被常见编译器支持,但是标准中并未提到。
代码1
#includeint main(void) { printf("%m\n"); return 0; }
输出结果:
Success
等价于:
printf("%s\n",stderr(errno));由于你的代码前面并没有执行出错设置errno,因此errno会是0,而对应的描述信息就是Success。
代码2
#includeint main(void) { int i = 10; printf("%zu\n",sizeof(i++)); printf("%zu\n",sizeof(++i)); printf("%d\n",i); return 0; }
输出结果:
4 4 10
sizeof实际作用的对象是类型。sizeof中的表达式本身并不会被执行。
代码3
#include#include int main(void) { while(1) { fprintf(stdout,"公众号"); fprintf(stderr,"编程珠玑"); sleep(10); } return 0; }
输出结果:
编程珠玑编程珠玑编程珠玑
为什么不会输出公众号呢?原因在于标准输入默认是行缓冲,而标准错误是无缓冲。这在《那些奇奇怪怪的缓冲问题》中已经有解释了。
代码4
#includeint main(void) { int a = 10; switch(a) { int b = 20; case 10: printf("%d\n",a + b); break; default: printf("%d\n",a + b); break; } return 0; }
输出结果:
10
switch中的int b = 20,并不会被执行,你编译时就会发现有警告。
代码4
#includeint main(void) { printf("%c\n",4["hello 公众号编程珠玑"]); return 0; }
输出结果:
o
等价于:
char *str = "hello 公众号编程珠玑"; printf("%c\n",str[4]);代码5
//来源:公众号编程珠玑 //https://www.yanbinghu.com #includeint main(void) { char arr[] = {'h','e','l','l','o'}; printf("%s\n",arr);//灾难!,可能会崩溃 return 0; }
代码6
没啥用,还会core dump的超短代码,可以编译运行:
main=0;
代码7
#includeint main(void) { int arr[] = {5,4,3,2,1}; for(int i = -1; i < sizeof(arr)/sizeof(int) - 1; i++) { printf("%d\n",arr[i+1]); } printf("end\n"); return 0; }
输出结果:
end
原因也很简单,sizeof(arr)/sizeof(int)的结果是unsigend, int类型的i 和unsigned比较,被转换为一个很大的unsigned数,所以for循环的条件不满足。
代码8
#includetest() { long b = 12345678987654321; return b; } int main(void) { long a = test(); printf("%ld\n",a); return 0; }
输出结果:
1653732529
代码9
#includeint main(void) { float a = 3; int b = 2; printf("%d\n",a/2); return 0; }
输出结果:
1199094392
原因:浮点数在计算机中按照IEEE754标准存储
到此,关于"C语言迷惑行为有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
代码
结果
输出
珠玑
编程
公众
行为
语言
标准
学习
原因
缓冲
编译
更多
等价
类型
问题
帮助
实用
很大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
互联网科技活动banner
科技互联网龙头
中国互联网科技股
互联网 的科技创新
互联网科技革命
唐信互联网科技
鑫亿盛互联网科技
互联网巨头投资的硬核科技
现代科技和互联网有关系吗
互联网之后的科技是什么
中国的互联网科技企业的崛起
互联网金融中的现代科技
和信科技工业互联网
互联网保险科技创业
威龙国际互联网科技公司
用友工业互联网科技发展
恒生互联网科技业指数调整周期
中国互联网有什么科技
工业互联网科技创业
什么是科技互联网
云之行互联网科技
互联网金融监管科技数据
互联网科技论文
盛创互联网科技有限公司
上海电发互联网科技有限公司
剑昆互联网络科技有限公司临桂
米聚互联网科技南京有限公司排面
互联网金融科技公司的优势
广州全民伙伴互联网科技有限公司