读书人

求输出结果,该如何解决

发布时间: 2013-01-20 10:22:40 作者: rapoo

求输出结果
int i=0;
char str[100]="123\123456";
while(str[i]) i++;
printf("%d", i);
这个程序的输出结果为什么是“7”?

[解决办法]
\123 被解析成了一个字符 S
[解决办法]
字符串里面反斜杠 \ 是转义符。
有些特殊的字符是用反斜杠加其他字符这个整体来表示,比如'\n' 表示换行 '\t' 表示制表符
如果是想表示它本身,则需要'\\' 它是一个字符,即 \
而\NNN则表示八进制数NNN在ascii码中对应的字符(比如'\103'表示字符'C')
\xhh 表示十六进制数xx在ascii码中对应的字符(比如'\x43'表示字符'C')
所以说这些都只代表一个字符。
[解决办法]
ascii :S十进制: 83八进制:123
转义字符: \ddd1到3位八进制数所代表的任意字符 三位八进制

读书人网 >C语言

热点推荐