为什么可以在" char"中存储多个字符?变量?

时间:2015-08-28 15:39:16

标签: c char

这是一个练习测验问题:

int main()
{
    char ch = '\060';
    printf("%d\n", ch+1);
    return 0;
}    // What is the output?

答案是49

我认为它是49,因为ASCII表上的048,而48 + 1 = 49. 60被忽略/忽略( ch是char变量,而不是字符串1)?另外,我认为\0首先表示一个空字符,所以我认为输出为1(空字符在ASCII表上的值为0)。

3 个答案:

答案 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字符的含义并不重要。