C语言问题

为什么"\18\08"的字符串长度是2,\18不是一个字符吗?还有,可不可以把\08看做一个字符?

长度是2不错,但\18不是一个字符,\08也不是一个字符;字符串的两个字符是\1和8,而\0是字符串结束符。\18和\08不是字符的原因是\+数字是八进制ASCII表示法,但八进制不可能有8,所以被编译器解释为\1、8、\0、8,计算长度时碰到\0就认为字符串结束了,所以长度是2。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-22
\1是1个字节
8是1个字节,
然后遇到了结束符\0,结束符是不算长度的,因此只有两个字节
这里\18和\08都不能算作一个字符,
\转义也有一起转义三个数字的情况,但必须是0xx的八进制数字,比如
'\000'等价于'\0',但不等价于'\00',后者是两个字符
'\110'是一个字符,但和'\11\0'不一样,这里是3个字符,分别是\1 1 \0
第2个回答  2019-09-22
我记得\表示转意运算,也就是这个字符后面的内容当做另外的含义处理,所以这个符号后面一个字符不算数!追问

那么为什么字符串长度是2?

第3个回答  2019-09-22
\+数字代表一个数字,字母,或者操作,是一个整体追问

那为什么字符串长度是2?

相似回答