struct st
{
int a1 : 3;
int a2 : 2;
int a3 : 1;
}
void main(void)
{
x.a3 = -1;
if (x.a3 == -1) printf("TRUE\n");
else printf("FALSE\n");
x.a3 = 1;
if (x.a3 == 1) printf("TRUE\n");
else printf("FALSE\n");
}
如果'x.a3 = -1;'首先如果是TRUE。
但是,爲什麼'x.a3 = 1'不會在第二個變化?它仍然是x.a3 = -1。結構變量未被賦值改變
and
如果我輸入'x.a3 = 1;'在第一個如果,它仍然x.a3 = = 1!它並沒有改變!
'void main()'是一個無效的簽名。最小簽名是'int main(void)'。什麼是'x'?代碼不能編譯。提供[mcve]。 – Olaf
@Olaf在閱讀C11 5.1.2.2.1 2時,「它應該用int的返回類型或其他實現定義的方式來定義。」 'void main(void)'是實現定義的,如果它是有效的,當然不是無效的。我想這取決於「或」。 IAC,當然不是OP的關鍵問題。 – chux
@chux:這是受解釋。除此之外,所有的全尺寸操作系統都需要一個「int」結果。 – Olaf