C语言char数组溢出为什么不报错?

作者站长头像
站长
· 阅读数 18

C语言char数组溢出为什么不报错?C语言char数组溢出为什么不报错?问题:一个汉字占俩字节,为啥俩汉字还能打印?

回复
1个回答
avatar
test
2024-07-18

C标准说:

若 dest 数组长度不足则行为未定义

如果你的编译器够牛逼,运行这个程序能导致地球爆炸,都是合理的

另外,一个汉字不一定占俩字节。比如,UTF-8 编译时,sizeof "张三" - sizeof "" == 6

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容