这个小程序是如何工作的?
How does this litle program work?
我试图检查有关 C++ 的 QA 练习,但有一个问题让我抓狂!!
typedef struct {
unsigned int i : 1;
} myStruct;
int main()
{
myStruct s;
s.i = 1;
s.i++;
cout << s.i;
return 0;
}
问题说输出是什么:0/1/2/3/-1/段错误?
我确实检查了 2 这是一个错误的答案 :D ,那么为什么程序显示 0 ?
您需要熟悉 bitfields。
默认情况下,int 的大小为 32 位(4 字节)。但是使用给定的表示法,您可以指定变量使用多少位。
因此,当您将值从 1 递增时,它会溢出并且 returns 变为零。
我试图检查有关 C++ 的 QA 练习,但有一个问题让我抓狂!!
typedef struct {
unsigned int i : 1;
} myStruct;
int main()
{
myStruct s;
s.i = 1;
s.i++;
cout << s.i;
return 0;
}
问题说输出是什么:0/1/2/3/-1/段错误?
我确实检查了 2 这是一个错误的答案 :D ,那么为什么程序显示 0 ?
您需要熟悉 bitfields。
默认情况下,int 的大小为 32 位(4 字节)。但是使用给定的表示法,您可以指定变量使用多少位。
因此,当您将值从 1 递增时,它会溢出并且 returns 变为零。