#define A 25
#define B A+5
printf ("%d", B*2);
홍성대는 B가 30이므로 당연히 B*2는 60이 출력될것으로 생각하였다
하지만 이상하게도 결과는 35가 출력되었는데
이것은 define 매크로가 무식하게 연산을 하기때문이다
B가 25+5이므로 B*2는 25+5*2 즉 35가 출력되는것이다
이런 사태를 방지하기 위해서는
#define B (A+5) 이런식으로 괄호를 써주어야 올바르게 작동한다
(25+5)*2=60 즉 60이 출력된다
홍성대는 C언어의 정석 이라는 책을 써낼 예정이다
(소설) 수학의 정석 저자 홍성대의 C언어 탐방기 (1)
C언어의 정석(211.109)
2014-10-20 18:37
추천 0
댓글 3
다른 게시글
-
야 내도 뗄감인데.... 돈 깍였다 [5]장작(182.218) | 14.10.20추천 0
-
아이템이름같은 크기가 불규칙한 정보는 어떻게 저장해야 좋나요?? [7]dd(101.235) | 14.10.20추천 0
-
프로그래밍 갤러님 들 질문 하나만 하겠습니ㅏㄷ !!! [1]실명아이디(realnameid2) | 14.10.20추천 0
-
여기가 땔감 게시판인가요 아니면 잡탕인가요 아니면 프갤인가요 [1]ㅋㅋ(175.211) | 14.10.20추천 0
-
넷상에서 병신짓하는 고학력들은 자기 고학력인거 티 안내던데 잘 [4]ㅋㅋ(175.211) | 14.10.20추천 0
-
에잉 떡밥 다 식어버렸어 [1]백이.(qkrqo123) | 14.10.20추천 0
-
백왕 연봉얼마받음? [4]ㅂㅂ(175.116) | 14.10.20추천 0
-
패션디자이너 현실.jpg [2]ㄴㅁㅇㅁㅇ..(115.95) | 14.10.20추천 0
-
이번주 뒤지겠네 [4]관노(203.226) | 14.10.20추천 0
-
인잭션질문 [4]wow(222.239) | 14.10.20추천 0
고등학생 수학왕 홍가가 씨언어도 만드네 ㅡㅡ..
애초에 #define 전처리기는 소스코드에 있고 해당되는 모든 문자열을 다른 문자열로 치환해주는 역할인데 그게 무식한 연산이라고 볼 수 있나?
테스트