궁금증...(b>c) = ???
글쓴이: pchero / 작성시간: 화, 2007/07/24 - 4:03오후
#include
int main()
{
int b = 10;
int c = 15;
int d = 20;
int e;
e = (b>c)-d;
printf("(b > c) - d = %d\n",e );
}
얼마전 학교 선배에게서 결과로 출력되는 e의 값이 얼마가 될것 같냐는 질문을 받았습니다.
저는 모른다고 했습니다;;;;
선배왈, 답은 -19 야.
-19 라는 대답을 들은 저는 순간 이해했습니다. 아~~
하.지.만...
직접 gcc 와 g++ 로 컴파일을 하고 실행을 하니 결과값은 -20이 나옵니다..
(b>c)의 값이 참(true)이면 0을 리턴하고, 거짓(false)이면 1을 리턴한다고 생각했었는데..
실제로 컴파일을 해보니 예상했던 값과 다른값이 나와서 당황했습니다.
비주얼스튜디오에서는 테스트를 못해봤는데..
어째서 저런값이 나오는지 궁금합니다.
혹여 비주얼스튜디오에서는 -19 라는 값이 나온다면...
컴파일러마다 (b>c) 의 리턴값이 틀린다는 것인지요..
괜한 궁금증이 떠올라 여기에 글귀를 적어 봅니다.
Forums:
저는 반대로 알고
저는 반대로 알고 있습니다만...
참일 때 1, 거짓일 때 0 아니던가요?
http://sebul.sarang.net/
세벌 https://sebuls.blogspot.kr/
으헉....
그랬군요..답은 가까이 있었네요;;
이긍이긍...C책 첨부터 봐야 겠네요.
부끄러워라;;;;
---------------------------------
제일 왼쪽이 저입니다 :)
---------------------------------
제일 왼쪽이 저입니다 :)
제가 알기론 참일
제가 알기론 참일 때는 0이 아닌 아무 값이 나오고 거짓일때는 0이 나오는걸로 알고 있는데
(컴파일러가 보통 참일때는 1을 넣는 것이 많아서 그렇지 2나 10 등등이 들어가도 상관없습니다)
b>c라고 했으므로 맞네요. 부등호가 반대였다면 결과가 어떻게 되는지는 컴파일러마다 달라집니다.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
아닙니다. b>c가
아닙니다.
b>c가 참이면 1, 거짓이면 0으로 평가됩니다.
0은 거짓, 0이 아니면 참이라는 것과 혼동하신 듯.
컴파일러마다
컴파일러마다 달라집니다는 만능 면죄부가 아닙니다.
님이 헷갈린다고 아무데나 남용하지 마시지요.
C언어에서는 참과 거짓을 구분하는 기준도 아주 명확하고,
relational-expression의 결과값도 아주 명확하게 정의되어 있습니다.
대체 뭐가 컴파일러마다 달라집니까?
선배와 후배가
선배와 후배가 똑같이 멍청하니 참으로 정겨운 모습이군요.
그 선배한테 앞으로 C 관련문제는 물어보지 마십시오.
그 선배가 틀린 건
그 선배가 틀린 건 맞지만 이렇게 인신 공격하는 건 보기 안 좋네요.
살다보면 실수할 수도 있는 거 아닙니까?
부끄럽네요..;;
괜한 글을 올려서 남까지 피해를 입히네요;;
죄송합니다.
화내지 마세요;;
---------------------------------
제일 왼쪽이 저입니다 :)
---------------------------------
제일 왼쪽이 저입니다 :)
^^ 무심코 넘어가던...
^^ 무심코 넘어가던... 코드네요.. ^^;
──────────────────
You'll only cry those happy tears.
I'll love you with every beat of my heart.
──────────────────
──────────────────
You'll only cry those happy tears.
I'll love you with every beat of my heart.
──────────────────
댓글 달기