tlawotjd123   3년 전

else if( i < 100), else if( i < 1000)를 사용할때랑

else if( 10 <= i < 100), else if(100<= i < 1000) 사용할때 출력값이 다릅니다

(<=)가 들어갈때마다 출력값이 +2가 되어나옵니다

같은 조건아닌가요????

왜다르게 나오는거죠ㅠㅠ

kravi   3년 전

a<b<c 를 표현하고 싶으시면 a<b && b<c 로 쓰셔야 합니다.

참고로 a<b<c는 컴파일러상에서

(a<b) < c
(부등호 연산) (true/false) < c
(정수형으로 변환) (1/0) < c
=> true/false

라는 흐름으로 컴파일됩니다.

tlawotjd123   3년 전

표현을 저렇게 하면 안되는건 확실히 알겠습니다 !!!

그런데 밑내용이 이해가 될듯 말듯합니다 !!! 한번만 다시 설명해주실수 있을까요ㅜㅠㅠ 복받으실겁니다

kravi   3년 전

예를 들어서 a=1, b=2, c=2라고 가정해봅시다

a<b<c라고 쓰면 1<2<2니까 우리 눈에는 false가 도출되어야 할 것 같지만, 컴파일러는 다음과 같이 이해하게 됩니다:


1<2<2 : 앞 연산자(<)와 뒷 연산자(<)의 우선순위가 같으니 앞에서부터 처리

(1<2)<2 : 1<2는 참이므로 true를 반환

(true)<2 : bool과 int 사이에서 형식을 맞춰주기 위해 bool을 int로 캐스팅

1<2 : true를 반환


의도와는 다르게 사실상 a<b && 1<c 와 같은 효과를 갖는 조건문으로 변합니다.

tlawotjd123   3년 전

설명 너무 감사합니다 고수님 만수무강하세요!!!!

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