这是一个练习测验问题:
int main()
{
char ch = '\060';
printf("%d\n", ch+1);
return 0;
} // What is the output?
答案是49
。
我认为它是49
,因为ASCII表上的0
为48
,而48 + 1 = 49. 60
被忽略/忽略( ch
是char变量,而不是字符串1)?另外,我认为\0
首先表示一个空字符,所以我认为输出为1
(空字符在ASCII表上的值为0
)。
答案 0 :(得分:2)
'\060'
是一个单个字符,其中060
是八进制数字,其值确实为十进制48
。
C11§6.4.4.4字符常量
octal-escape-sequence: \ octal-digit \ octal-digit octal-digit \ octal-digit octal-digit octal-digit
答案 1 :(得分:0)
'\060'
表示单个字符,而不是字符串(单引号)。它是用八进制值060
或十进制48
(ASCII字符'0'
)编码的字符的文字。在该值中添加一个可以得到十进制49
(ASCII字符'1'
)。
答案 2 :(得分:0)
\060
将被识别为八进制数字,因此等于十进制数为48。作为char变量,它等于' 0' 0用ASCII。但是,由于输出格式为%d
,因此ASCII字符的含义并不重要。