int data = 5 , result = 0; 인 변수가 선언되었다고 가정할시
1.
result = data == 5;
에서 result트와 데이터 값은 어캐 됨?
2.
result = data != 5 && (data = 0);
에서 result와 데이터 값은 어캐 됨?
연산 과정좀 가르켜줘 ㅠㅠ
특히 2번에서 데이터의부정을 5에 대입한다는게 이해가 안가
6개의 댓글
무분별한 사용은 차단될 수 있습니다.
int data = 5 , result = 0; 인 변수가 선언되었다고 가정할시
1.
result = data == 5;
에서 result트와 데이터 값은 어캐 됨?
2.
result = data != 5 && (data = 0);
에서 result와 데이터 값은 어캐 됨?
연산 과정좀 가르켜줘 ㅠㅠ
특히 2번에서 데이터의부정을 5에 대입한다는게 이해가 안가
구백육
asdfgqwerty
그 왼쪽에 잇는 result는 0 아닌가요 그냥 결과값으로 생각 하면 되는건가요?
구백육
asdfgqwerty
그 data !이 5에서 0 처리 되는건가요?
숨은음은
1.
(1)
result = data == 5;
의 의미는
"data == 5에서의 결과를 result로 저장합니다"임
(2)
data == 5는 data의 값이 5랑 같은가? 를 묻는 조건문임
(3)
위에서 data는 5였으므로 data == 5의 결과는 true인데, true는 정수값로 형변환 시 1로 취급하므로 result는 1
data는 값이 변동되지 않았으므로 data는 5
result = 1
data = 5
2.
(1)
result = data != 5 && (data = 0);
우선 2개로 나뉘어 있는 구문이다
data != 5 와 (data = 0)이라는 구문.
두 구문 사이의 &&은 논리 AND 연산자라고 하는데, 왼편과 오른편의 결과가 true로 같을 때에 true,
둘 중 하나라도 다르면 false, 둘다 false로 같을 때 false를 반환하는데
문제는 논리 AND 연산자는 왼쪽편부터 먼저 시작해.
(2)
data != 5는 역시 조건문인데, data의 값이 5랑 같지 않는가?를 물은 거야.
그러니, data는 5이므로 같은데 같지 않냐고 물었으니 false를 반환할거야.
(3)
여기서 중요한 것이 있어.
(2)에서 왼편의 결과가 false였지? 그럼 논리 AND 연산자는 무조건 false를 도출할 수 밖에 없어.
이럴 경우에는 그 다음 오른편 연산을 하지 않고 연산을 멈춰. 어차피 false니까 더 계산할 필요가 없잖아.
그래서 data에 0을 삽입하는 과정은 건너뛰게 돼.
그래서 결과로 보면
result는 false를 받았으므로 정수변환시 0이므로 result = 0
data는 아무런 값 변동이 없었으므로 data = 5가 된다.
asdfgqwerty
아하 !=이 같지 않다는 뜻이었네 ㄷㄷ 감사합니다 전 data 5를 부정하여 0으로 만드는 줄 알았어요 궁금한점이 해결됐네요 감사해영