Sizeof.. <= C언어에서 명백한 연산자다.




공비군의 질문에 이것저것 검색해보다가.

첫번째로 발견한 KLDP의 글..


그중에서 눈에 띄는건!!1


////////////////////////////////////////////////////////////////////////////////

#include

int main(int argc, char *argv[])
{
int len = -1;

printf("%d %d\n",len,sizeof(int));

if(len > sizeof(int)) printf("BIG\n");
else printf("small\n");

return 0;
}

위 코드의 결과는 무었이라고 예상합니까?

저는 small이 출력되길 원했는데.. BIG이 출력되네요.. 제 코드 버그 찾던 중 발견했습니다.
원인이 무엇인가요?

원본링크 : http://kldp.org/node/72508
////////////////////////////////////////////////////////////////////////////////

잘 생각해보니.. small이 나와야 하는데 왜? -_-;;;

문제는 sizeof의 리턴 타입..


그 답은 역시 KLDP답게 댓글에~


////////////////////////////////////////////////////////////////////////////////
sizeof

Returns the size of the expression or type.

Keyword sizeof is, in fact, an operator. It returns the size, in bytes, of the given expression or type (as type size_t). Its argument may be an expression of a type name:

sizeof expression
sizeof (type)

typedef unsigned long size_t;

#include

int main(int argc, char *argv[])
{
int len = -1;
unsigned long size = 4;

//printf("%d %d\n",len,sizeof(int));
printf("%d %d\n",len,size);

//if(len > sizeof(int)) printf("BIG\n");
if( len > size ) printf("BIG\n");
else printf("small\n");

return 0;
}
////////////////////////////////////////////////////////////////////////////////

간단하게 요약해보면

sizeof의 리턴타입은(연산자 주제에 리턴타입이라니!!) unsigned ..

얼래;; -_-

unsigned x  =0
x-1 = 조낸큰값..


간단 요약이었습니다....



오늘하루도 보람차게~



P.S 토익 ;;; 싸우자;

+ Recent posts