问题描述
- C语言关于字符串长度的问题
- main()
{
char str[]=""La16ef"";
printf(""%dn""sizeof(str));
}
程序的运行结果为6,我明白,但是如果将字符串改为""La18ef"";,
就是把6改为其他的数字,结果就为7了,为什么?谢谢了。
解决方案
为什么不求 strlen 而是 sizeof 呢?
第一,sizeof 会多算一个字符串结束符
第二,8进制数的处理,编译器会将 能当做一个字节8进制的数做为一个字符处理,否则算一个单独的字符。
解决方案二:
16 当做8进制处理 18 不会当做8进制
解决方案三:
追问一下
L 明显是不符合转义字符的定义的
所有的编译当会把它当一个字符'L'处理吗?
gcc会报wanring
warning: unknown escape sequence: 'L' [enabled by default]
把它当'L'处理
解决方案四:
唉 楼主应该 看一下 转义这章 ddd代表的含义 以及用法 你见过在八进制中出现8这个数字吗 就相当于 你见过在二进制中出现2这个数字吗
时间: 2024-12-05 17:40:44