C语言在计算字符串长度中18的长度是多少呢?

Python041

C语言在计算字符串长度中18的长度是多少呢?,第1张

字符串以\0开头,后面跟(至多三个)数字,一般来说是表示一个八进制。但是如果遇到八进制之外的,那么就停止运算,其他的就不算到这个八进制里面了。

比如\017中0后面跟着17 都是属于八进制的数,所以就是相当于ascii码是15(也就是八进制的017)的字符,所以长度就是1了

另外\018就不同了,先遇到1,然后继续发现下一个就是8 不属于八进制的东西,八进制的“解析”就结束了 所以相当于ascii码的1和数字8两个字符组成的子串,所以长度就是2

纯手打 打字不易 谢谢采纳

A不正确。应该是取决于声明而不是定义的位置。声明引入一个名称,定义引入一个实体,作用域和名称相关,生存期和对象(对象属于一种实体,其它实体还有类型等)相关。

C明显不正确。理由同上,static修饰局部变量为静态存储类,在首次进入函数时初始化一次,之后进入函数时不初始化而保留在上一次离开函数的值。此外,tssuperszy 的说法不确切,应该是在作用域外“不可见”而不是“不可访问”(特别地,在C++中两者有严格区别)。

D也是不正确的。理由如C选项的解释,使用static修饰局部变量不是为了限制其它编译单元的引用,而是为了在函数多次调用之间保存值。

====

[原创回答团]

不是的。

C++中转义字符有三种表示方法:

1 在\后面接一个特定的字母,如\n,\t等。表示对应的意义。

2 在\后面接x,然后接两位16进制数字,不区分大小写。如'\x12', '\xAb'等。表示对应两位16进制的ascii码值。

3 在\后面接三位8进制数值,如'\123', '\011'等。表示三位8进制数表示的ascii码值。

与'\018'最为接近的情况是第三种,不过第三种要求是8进制数,所以合法的字符只有0~7,8并不是合法的8进制字符。所以作为单个字符\018的写法是错误的。如果出现在字符串中,会被当做'\01'(ascii码值为1)和'8'两个字符来处理。