alphago92   8년 전

코드가 상당히 긴데

43, 44줄만 봐주시길 바랍니다


if(max(max(a,b),c)==a){

 printf("%d %d\n",max(max(a,b),c),a);


이 부분인데요


max(max(a,b),c) 랑

a랑 비교해서 

둘의 값이 같다면 진입하게 되는 if문입니다


근데 분명이 값이 달라야 하는 예시를 넣었는데 

같다고 진입을 하네요


그래서 진입을 하자마자

둘의 값을 출력해보았습니다


위 문제의 경우

5

3 2 1

3 2 1

3 2 1

1 3 2

1 3 2

을 넣었구요


둘의 값이 각각 12 ,11 이 되어야 맞습니다


진입하고나서 바로

printf("%d %d\n",max(max(a,b),c),a); 로 둘의 값을 출력해보니

12 ,11 이 나왔습니다


그런데 12, 11인데 애초에 어떻게 진입한걸까요?


귀신이 곡할 노릇입니다


cseteram   8년 전

삼항연산자 우선순위가 낮아요.

가령 if ( (1) ? (12) : (7) == 11) ) 이라는 if문이 있다면, (7) == 11이 같이 묶여버립니다.

그래서 max, min을 define 매크로를 고쳐야합니다.



alphago92   8년 전

헐.. 맞네요 감사합니다

맨 밖에 괄호를 써도 맞고 

아예 max결과를 다른 변수에 따로 저장해둿다가

if문에 변수를 걸어줘도 되는군요 ㅠㅠ

많이 배우고 갑니다..

댓글을 작성하려면 로그인해야 합니다.