기본 콘텐츠로 건너뛰기

라벨이 unsigned인 게시물 표시

char도 부호가 있다

#include <stdlib.h> #include <stdio.h> int main(int argc, char* argv[]) { char b = 255; int a = b; printf("%d\n", a); return 0; } 아무런 옵션을 주지 않고 gcc로 컴파일 하면 결과는 -1 이 나온다. 그러나 " -funsigned-char "옵션을 주고 컴파일하면 255 가 나온다. 어떤게 표준이려나? 전자일까? Powered by ScribeFire . 원본 위치: http://purewell.egloos.com/3576438

unsigned type & loop

C/C++에는 여러가지 숫자변수형태가 있고, 이는 부호가 있는 것(signed)과 없는 것(unsigned)으로 나눌 수 있다. 오늘 할 이야기는 그 중에 하나 키가 크고요~...가 아니라 부호가 없는 것에 대한 저주스런 이야기이다. size_t i(delta); while ( i >= 0 ) { // blar blar... --i; } 이 소스는 CPU 100%를 쳐먹으면서 기계를 혹사시킬 것이다. 컴파일러나 라이브러리에 따라 그 구현이 다르겠지만, 보통 size_t는 unsigned long형이다. 십장생. i가 0이어도 루프는 한 번 더 돈다. 마지막에 i가 0이지만 감소연산을 때리면, i는 그것이 가질 수 있는 최대값으로 변모한다. 당연하지... unsigned니까. 결국 저 악마 같은 코드는 무한루프를 도는 것이다. 몇 년을 C/C++로 밥 벌어먹고 살아도 실수는 계속하기 마련인가?! 원본 위치: http://purewell.egloos.com/3417102