size_t , int32_t 등등 이식성을 위해 존재한다는 타입들...잘 이해를 못하겠습니다.
size_t 같은 경우도
typedef unsigned int size_t 이렇게 되어있던데..
이렇다면 어차피 16bit int System 에서 size_t도 영향을 받게 되지 않나요?
그렇다면 이식성을 위해 존재한다는게 아이러니 한거 같아서..핫..
2 . 그리고 sigend int 와 unsigend int 에서 unsigned int의 최대값을 signed int에
저장을 해도 아무 이상없는것이죠? 그냥 명시적인 구분을 위해 존재하는 것인가요?
이건 제 생각인데 맞는지 확인 해보고 싶네요..
unsigned int, signed int 둘다 할당되는 메모리크기는 같고 그 메모리 크기만큼의
최대 값이 저장이 가능하고 다만.. 출력시에 %d %u 하면 값이 다르게 출력된다고 생각하는데..
즉 %d하면 최상위 비트를 부호비트로 인식해서...값을 판단한다는 것...^^ 맞나요?
않을 경우 이식성에서 고려의 대상이 될 수 있습니다. C의 이식성은 데이터의 이식성이 아니고 소스레벨의 이식성 입니다.
다른 플랫폼에서 작성된 소스를 수정 없이 가져다 쓴다는 것이지 데이터 자체가 호환 된다는 것이 아니죠. 그것은 한 컴퓨터에서
작성된 데이터는 다른 플렛폼에서는 그 데이터 그대로 호환이 안될 수도 있다는 소리입니다. 만약 데이터를 호환시키려면 다른
방법을 사용해야 하겠죠.
2. unsigned와 signed의 타입은 특별한 조치를 취하지 않고 바로 적용될 겁니다. 보통 컴파일 될 때 그것의 타입을 컴파일러가
테스트 한 후에 알맞는 코드로 바꾸겠죠. 물론 overflow나 underflow가 발생되는 것에 대한 책임은 전적으로 프로그래머에게
달려있습니다.
unsigned와 signed는 최상위비트의 값으로 양수와 음수의 표현을 합니다. 최상위 비트를 뺀 값으로 수의 크기를 나타내죠.
다만 음수의 저장 방법은 컴퓨터마다 다르게 저장됩니다. 일반적으로 대부분의 컴퓨터는 음수를 저장할 때 보수 값을 취하는
경우가 많습니다. 예를 들어 -1을 8비트 signed char에 저장한다면 0xFF로 저장이 됩니다.