我正在练习一些 C 相关的MCQ,我遇到了一个预测输出的问题。这是个问题:
#include <stdio.h>
int main(void) {
char a = '012';
char b = '\012';
printf("%d %d", a, b);
return 0;
}
给出的输出是:50 10
然后我添加了更多行并在 gcc编译器
上执行#include <stdio.h>
int main(void) {
char a = '\012';
char b = '\08';
char c = '012';
char d = '\0x12';
printf("%d %d %d %d", a, b, c, d);
return 0;
}
我得到的输出是10 56 50 50
(参见this)
对于某些变量,我认为最后一个字符的 ASCII 已分配但不是全部。任何人都可以解释这种行为以及如何分配值?如果有人可以引用这些参考文献,将会很有帮助。