我在C标准中找不到指定的任何地方.例如,在
struct { signed int x:1; } foo;
Run Code Online (Sandbox Code Playgroud)
是foo.x一个类型的左值int,还是其他什么?int因为你不能在其中存储任何类型的值int,只有0或-1,但它找不到任何类型的语言,这似乎是不自然的.当然,在大多数表达式中使用它,int无论如何它都会被提升,但是实际的类型在C11中有所不同_Generic,而且我在标准中找不到任何关于位域如何与之交互的语言_Generic.
可能重复:
负 ASCII 值
int main() {
char b = 8-'3';
printf("%c\n",b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我运行这个程序,我得到一个看起来像问号 (?) 的标志。
我对你的问题是为什么它打印那个而不打印任何东西,因为据我所知,ASCII 表中 b 的值是负 43,这是不存在的。
顺便说一句,当我编译这段代码时:
int main() {
char b = -16;
printf("%c\n",b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我什么也得不到。