inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

7.7 논리 연산자 Logical operators

질문드립니다.

272

junghoyoung8

작성한 질문수 9

1

24:32초 에서 

int x = 1, y = 2;

if (x++ > 0 && x + y == 4)

{

printf("%d %d\n", x, y);    

}

여기에서 x++가 && 연산자를 만나면 실행이 된다고 하셨는데 그러면 x++>0에서는 1>0 으로 비교를 하고 true가 된 이후에 1이 증가하여 2+2==4 를 비교하게 되는건가요?

아니면 2>0로 비교를하고 2+2==4가 되는건가요..?

c

답변 3

4

안소

안녕하세요. 답변 도우미입니다.

i++ 이렇게 뒤에 붙는건 기존의 i 값을 먼저 내뱉은 후에 증가가 된다고 생각하시면 됩니다. 

즉 a = 3 일때 a++ 는 3 을 내뱉고나서야 4 가 됩니다. 즉 a++ = b 를 한다면 b 에게 기존 a 값인 3 을 건네주고나서야! a 값이 4 로 변경됩니다. 이 연산이 모두 끝나면 a 는 4, b 는 3 이 됩니다. 

사실 시스템상 더 정확한 순서를 말씀드리자면

1. a 의 기존 값을 임시 공간에 복사

2. a 값 1 증가

3. 임시 공간에 복사해둔 a의 기존값을 b 가 받게 됨

위와 같은 순서로 이루어집니다.

반면 ++i 이렇게 앞에 붙는건 반대로 증가부터 먼저시킨 후 변경이 된 i 값을 내뱉습니다.

즉, ++a = b 는 b 에게 미리 증가시킨 후의 값을 건네주었기 떄문에 a 와 b 모두 4 가 됩니다. 

0

junghoyoung8

감사합니다.

1

junghoyoung8

&&만나고 난 뒤에 증가가되서 오른쪽 x에 영향을 주는거군요. 감사합니다.

1

haon

안녕하세요.

먼저 x++같은것을 증감연산자라고 합니다.

증감연산자에는 총 4가지있는데 ++x, x++, --x, x--가 있습니다.

마이너스가 붙는것은 플러스와 중첩됩므로 설명은 생략합니다.

x++는 나중에 1을 더하는것이고 ++x는 먼저 1을 더하는것입니다.

결과적으로 뭐냐면 1>0를 한다음에 2+2==4가 됩니다.

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

47

3

main 함수에서 왜 int만 선언이 되는걸까요

1

52

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

53

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

46

1

프로토타입과 함수간의 인자 불일치

1

72

2

12.12 헤더 관련 질문

1

59

2

Visual Studio Community 2026 사용 문의

1

134

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

59

2

getchar(), putchar()

1

92

3

강의자리ㅛ

1

78

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

112

2

소스파일안에 여러 파일

1

74

2

F5와 F7의 차이

1

75

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

68

1

Step over 기능 문의

1

52

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

64

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2

11.5 코드 구현

1

67

2