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입니다.구조 변수가 지정에 의해 변경되지 않음
및
'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 : 이것은 해석의 대상입니다. 따로 말하자면, 모든 풀 사이즈 OS는'int' 결과를 요구합니다. – Olaf