在C语言中,字符数组以null字符('�')作为结尾。当给字符数组赋值时,如果字符串长度小于数组长度,则用null字符填充剩余的位置。

例如,代码 char a[10] = "\x12\0999"; 中,字符数组 a 的长度为10,但字符串 "\x12\0999" 只有 5 个字符,所以剩余的 5 个位置被null字符填充。

"\x12" 表示一个十六进制的字符,十六进制数 0x12 的十进制为 18。"\0999" 表示一个八进制的字符,八进制数 0999 的十进制为 663。

因此,puts(a)printf("%s", a) 的输出结果都是 '\x12\0999',因为它们分别输出字符数组 a 的内容,其中包含了 '' 和 '�999' 以及填充的 null 字符。

简单来说,输出结果 '�999' 就是字符数组 a 中存储的内容,其中 '' 的十进制值为 18,'�999' 的十进制值为 663。


原文地址: http://www.cveoy.top/t/topic/bL0b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录