相关疑难解决方法(0)

比特域的类型是什么?

我在C标准中找不到指定的任何地方.例如,在

struct { signed int x:1; } foo;
Run Code Online (Sandbox Code Playgroud)

foo.x一个类型的左值int,还是其他什么?int因为你不能在其中存储任何类型的值int,只有0或-1,但它找不到任何类型的语言,这似乎是不自然的.当然,在大多数表达式中使用它,int无论如何它都会被提升,但是实际的类型在C11中有所不同_Generic,而且我在标准中找不到任何关于位域如何与之交互的语言_Generic.

c language-lawyer bit-fields c11

16
推荐指数
2
解决办法
3059
查看次数

ASCII 表 - 负值

可能重复:
负 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)

我什么也得不到。

c ascii char

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×2

ascii ×1

bit-fields ×1

c11 ×1

char ×1

language-lawyer ×1