2456번 - 나는 학급회장이다
코드가 상당히 긴데
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
1 3 2
을 넣었구요
둘의 값이 각각 12 ,11 이 되어야 맞습니다
진입하고나서 바로
printf("%d %d\n",max(max(a,b),c),a); 로 둘의 값을 출력해보니
12 ,11 이 나왔습니다
그런데 12, 11인데 애초에 어떻게 진입한걸까요?
귀신이 곡할 노릇입니다
삼항연산자 우선순위가 낮아요.
가령 if ( (1) ? (12) : (7) == 11) ) 이라는 if문이 있다면, (7) == 11이 같이 묶여버립니다.
그래서 max, min을 define 매크로를 고쳐야합니다.
헐.. 맞네요 감사합니다
맨 밖에 괄호를 써도 맞고
아예 max결과를 다른 변수에 따로 저장해둿다가
if문에 변수를 걸어줘도 되는군요 ㅠㅠ
많이 배우고 갑니다..
댓글을 작성하려면 로그인해야 합니다.
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인데 애초에 어떻게 진입한걸까요?
귀신이 곡할 노릇입니다