inflearn logo
강의

講義

知識共有

ホン・ジョンモのついていきながら学ぶC言語

7.8 単語の世紀の例

!line_flag에 대한 질문 있습니다.

372

junghoyoung8

投稿した質問数 9

1

기존에 문의 삭제하고 다시 올립니다.

bool line_flag = false;  처음에 이렇게 선언을 해주면  

if (!isspace(c) && !line_flag) 과정에서 "공백이 아니고 false가 아니라면" 으로 해석을 하고 있습니다.

그런데 강의에서 교수님에서는 true가 아니라면으로 말씀을 해주십니다. 

왜 그런지 이유를 알 수 있을까요? false로 선언을 해주었는데 "false가 아니라면"이 아니라 왜 "true가 아니라면"으로 말씀을 해주신건지 이해가가지 않습니다.

 line_flag를 false로 선언을해서 !false가 되어서 true가 되는 것 아닙니까? 그러면 "공백이 아니고 ture라면" 으로 해석해야 하는 것 아닌가요?

디버깅을 하였을때도 !line_flag가 true로 나올거라 생각을 했는데 false로 나와서 몇번이고 보았지만 이해가 되지 않습니다.

좋은답변 부탁드립니다.

c

回答 6

1

Hello Yeo

if(!isspace(c) && !line_flag) 가 의미하는 바는...
'공백이 아니고 line_flag 가 false 라면' 혹은 '공백이 아니고 line_flag 가 true가 아니라면' 입니다.

line_flag를 false로 선언을해서 !false가 되어서 true가 되는 것 아닙니까? 그러면 "공백이 아니고 true라면" 으로 해석해야 하는 것 아닌가요?
=> and 의 일반적인 상황을 두고 이야기 하시는건지, line_flag가 어떤 값을 가지고 있느냐에 대한 것인지 구분이 필요해보이네요.
전자라면 맞는 말입니다. 후자라면 틀린말입니다.
 
디버깅에 관해서는
디버깅을 할때 !line_flag 에 대한 정보가 나올 것이라 착각을 하고 계신 것은 아닌지요???
첫번째 while 문 진입입니다.

두번째 while문 진입입니다.


이번엔 이해하셨길 바랍니다. printf로 출력되고 있는 정보는 line_flag의 값입니다.
0 이면 false,
0 이 아니면 true입니다.

어쩌면 !line_flag 만으로 line_flag에 바뀐 값이 들어가 있을 것이다.
라고 생각하시는 것일 수도 있겠네요.
값을 넣어주려면
line_flag = !line_flag 를 해줘야합니다.

0

nahahat3872

이래서 프로그래머들이 고통받나 봅니다. ^^

0

junghoyoung8

죄송합니다. 제가 이해를 잘 못해서 질문을 이상하게 했네요. 저는 if(true)를 성립하기 위해서는 !line_flag자리에 true가 들어와야 된다고 생각하고 한 질문이였는데 제가 아직 초보라 질문을 이상하게 했나보내요. 답변 감사드립니다.

0

nahahat3872

if(true)를 성립 하기 위해 이해하신건 맞지만

Hello Yeo님 답글처럼 if(!isspace(c) && true)와 if(!isspace(c) && !true)에서 true = !line_flag입니다.

"공백이 아니고 false라면" -> "공백이 아니고 !line_flag가 false라면" 으로 해석하셔야 합니다.

 "공백이 아니고 true가 아니라면" -> "공백이 아니고 !(!line_flag) 라면"

0

Hello Yeo

7.1 강의와 7.7 강의를 다시 보시고 정리해보세요...
아직은 때가 아니신 것 같습니다.

0

junghoyoung8

답변 감사합니다. 완벽한 이해를 위해서 질문을 좀 드려도 될까요?

혹시 if(1) 을 가지고 if문을 이해를 해야 하는 것이 맞나요?  그래서 if(!isspace(c) && !line_flag)이 if(1)을 성립 되기 위해서는

if(!isspace(c) && true)라고 생각을 하는데 여기에서 if(!isspace(c) && !true)가 되니깐 해석이 "공백이 아니고 false라면" 혹은 "공백이 아니고 true가 아니라면" 으로 해석을 하면 되는 것인가요?

Export template 안됨

1

28

2

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

1

56

3

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

1

57

2

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

1

55

2

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

1

49

1

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

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

138

2

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

1

61

2

getchar(), putchar()

1

94

3

강의자리ㅛ

1

80

2

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

1

114

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

79

2

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

1

59

2

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

1

70

1

Step over 기능 문의

1

53

2

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

1

76

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

61

2

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

1

62

2

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

1

65

2

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

1

53

2

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

1

54

2