C에서
tmp=c
a > b ? c=a,a=tmp : a=b,b=tmp;
이렇게 짜면 warning 이 뜨는데 그냥 if문을 써야 할까요?
삼항연산자보다 if 문을 쓰는 게 코드가 더 알아보기 쉽다고 여겨지기 때문에 warning이 나오는 것이라 혼자 문제 풀 때는 당장은 상관이 없습니다.
보통은 삼항연산자를 쓸 때 코드가 깔끔해지는 경우에만 쓰고 기본적으로는 if문을 쓴다고 생각하면 좋을 것 같습니다.
혹시 그럼
이 구문은 문제가 없는건가요?
의도한 사항이 a가 b보다 클 때에 a와 c를 바꾸고 아니면 a와 b를 바꾸는 거라면 잘못 동작할 것 같네요.
아 잘못적었네요
a > b ? c=a,a=tmp : c=b,b=tmp;
error: lvalue required as left operand of assignment|
이런 오류와 함께 컴파일이 안되네요 알맞게 하는건 if 문뿐인가요?
괄호를 잘 치면 됩니다. C에서는 삼항 연산자가 대입 연산자보다 우선순위가 높기 때문에 이렇게 쓰면 아마도 (a > b ? c=a,a=tmp : c)=b,b=tmp;와 같이 묶일 듯 합니다.
이런 식으로 연산 의도가 한 눈에도 잘 보이게끔 괄호를 잘 치는 습관을 들이는 것이 좋습니다.
우선순위 때문 인줄 여태 몰랐네요 감사합니다. 기초가 부족해서 이런 실수를 하네요
댓글을 작성하려면 로그인해야 합니다.
ahdzl126 2년 전
C에서
tmp=c
a > b ? c=a,a=tmp : a=b,b=tmp;
이렇게 짜면 warning 이 뜨는데 그냥 if문을 써야 할까요?