C에서 char에 int를 할당하면 어떻게됩니까? 항상 왼쪽의 여분의 비트를 무시합니까?int에서 char 로의 할당이 C에서 어떻게 작동합니까?
예 (4 바이트 INT) : 진
unsigned char c = 0;
unsigned int i = 500;
c = i; // c is 244
c = i <<24>> 24; //c is 244
i = i <<24>> 24; //i is 244
, 500
이다 111110100
및 244
11110100
가있다.
@WhozCraig 부호없는 정수 오버 플로우가 정의됩니다 (오버플로 값은 모듈로 'UINT_MAX + 1'이됩니다). –
@ H2CO3 맞습니다. 서명되지 않은 오버플로 할 수 없습니다 (그리고 나는 잘 알고, 내가 [이 답변을 쓴 고려 고려] (http://stackoverflow.com/questions/13600991/why-is-a-negative-int-greater-than-unsigned-int/ 13601259 # 13601259)). – WhozCraig
@WhozCraig 걱정하지 마라. 일단 Objective-C를 컴파일 할 때 유형 정보가 코드 생성에 필요 없다고 잘못 선언했다면 (뇌사가 발생하는 이유가 무엇이든). 그리고 몇 분 안에 나 자신을 시정 했음에도 불구하고 어떤 사람들은 내가 무슨 말을하고 있는지 전혀 모른다 고 주장했다. –