#include<stdio.h>
int main(void)
{
struct str
{
int i: 1;
int j: 2;
int k: 3;
int l: 4;
};
struct str s;
s.i = 1;
s.j = 2;
s.k = 5;
s.l = 10;
printf(" i: %d \n j: %d \n k: %d \n l: %d \n", s.i, s.j, s.k, s.l);
getchar();
return 0;
}
출력 :누군가 나에게 설명 할 수있는 이유는 다음과 같은 결과가 나오는 이유는 무엇입니까? 웹 사이트에 주어
i: 1
j: 2
k: 5
l: 10
은 내가 비트 필드 무엇인지 이해하지 못하는
i :-1
j : -2
k : -3
l : -6
을 얻었다. 그리고 누군가이 코드에서 어떤 일이 벌어지고 있는지 말해 줄 수 있습니까?
책 또는 Google을 읽거나이 사이트를 검색하여 비트 필드를 확인하십시오. 그리고 대부분의 비트 필드 동작이 표준화되지 않았기 때문에 결과가 예제와 다릅니다. 그렇기 때문에 코드가 다른 컴파일러에서 작동하도록하려면 비트 필드를 피하는 것이 좋습니다. –
* "웹 사이트에서 출력"* - 어떤 웹 사이트입니까? – StoryTeller
'int i : 1'은 0이됩니다. signed int 비트 필드는 부호 비트를 예약하고, 한 비트만 제공했기 때문에 음수 또는 양수가 될 수 있지만 상환 가능한 크기 값은없는 부호있는 비트 필드가 남았습니다 (값을 남기지 않는 비트). 이 코드의 나머지 부분은 제공된 비트 (부호 비트 이하)에서 가능한 최대 값을 위반하는 연습으로 보입니다. – WhozCraig