gpt4 book ai didi

c - 为什么 C 中的以下代码打印 -1?

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:20 25 4
gpt4 key购买 nike

我期待 1 作为输出..

#include<stdio.h>
int main(){
struct A{
int a:1;
};
struct A bb;
bb.a=1;
printf("%d",bb.a);
return 0;
}

最佳答案

通过执行 int a:1,您将 a 设置为 1 位有符号整数。它由 1 位表示,假设在您的实现中使用二进制补码表示,它的范围为 {0,-1}。因此将 1 设置为 a 将表示 -1 的值。

附录:

请注意,根据 C90 标准,普通 intsigned int;但是当涉及到位域时,以下内容成立:

A bit-field may have type int , unsigned int , or signed int . Whether the high-order bit position of a plain int bit-field is treated as a sign bit is implementation-defined

关于c - 为什么 C 中的以下代码打印 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com