가 현재 나는 내가 예를 준 구조와 여기 INT 서명에 대한 C 작업과 혼란에 직면하고있다 : 여기서명 INT하지만 혼란
#include <stdio.h>
#include <string.h>
struct {
signed int age : 4;
} Age;
int main() {
Age.age = -8;
printf("Age.age : %d\n", Age.age);
return 0;
}
을 이미 크기를 설명했다 값을 저장하는 동안 int가 차지할 비트 수. 여기에 저는 나이에 가치 -8을 할당하고 있습니다. 그래서 그것은 8에 대해 1000과 같은 값을 저장하고 -8에 대해서는 왼쪽 첫 비트가 부호 비트로 알려진 11000과 같이 저장해야합니다. 따라서 int age가 -8을 저장해야한다면 5 비트가 있어야하지만 주어진 예제를 컴파일하는 동안 오류가 발생하지 않고 출력을 표시합니다.
제 문제를 해결해주세요.
왜 서명해야합니까? bitfields는 unsigned로 더 쉽습니다. –
이 문제의 내부 작업을 이해하고 싶습니다. –
@Sourav Ghosh 내 이해를 위해. –