인프런 커뮤니티 질문&답변
답변 6
0
아 ! 그러네요 8번째 줄의 line_flag도 값은 false네요.
그렇다면 8번째 줄의 if문에 충족을 못시키지 안나요?
8 if (!isspace(ch) && !line_flag)의if 문은
isspace(ch) 가 아니고 line_flag 거짓(현재 line_flage = 0 이니까))이 아닐때 line_flage가 1일때 true일때
8번째 if문으로 들어갈 수 있지 안나요? 그렇다면 아직 line_flag = false 인데 어떻게 들어갈수가 있나요?
위에 질문이랑 다 같은말인데 설명을 잘 못해서 계속 같은 질문해서 죄송합니다ㅠㅠ
0
음.. 비주얼 스튜디오로 디버깅 하시죠?? 느낌표에 마우스 커서를 대지 마시고 정확히 "line_flag" 에 마우스 커서를 올리시면 false 라고 뜰거에요.. 아마 ! 에 마우스 커서를 올리셔서 "! line_flag" 계산된 결과가 표시된 걸꺼에요.
11 번째 줄을 지나면 line_flag 는 true 가 되는게 맞습니다.
0
아니요 ㅠㅠ 죄송해요 제가 글쓰는 재주가 없어서
그게 line_flag를 !line_flag 해도 line_flag 값이 변하지는 않겠죠..
제가 궁금한건 2번째줄에 line_flag = false로 정의하고
왜 8번째 if안에 있는 line_flag의 값은 true 되며 (그래야지 !line_flag 가 false가 되는거죠?)
디버깅을 돌렸을때 10번째 줄에 가도 왜 여전히 line_flag의 값은 false인지
그러니까 왜 8번째 if문 안에있는 line_flag만 true값을 가지고 있는건지 그게 궁금한거에요
0
아 햇갈려 하시는 부분을 이해했습니다 ! 를 붙이면 line_flag 값이 바뀌어 저장되는 것이 아닙니다... line_flag 가 false 였다면 ! line_flag 를 해도 line_flag 는 여전히 false 입니다.
우리가 수학에서 A * 2 를 한다고 해서 A 값이 2배 증가하는건 아닌것 처럼요..
! 는 * 와 같은 연산을 하기 위한 기호일 뿐입니다.
0
네 그 개념은 이해 했습니다.
다만 2번째 줄에 line_flag = false로 정의해두고 8번째 줄 if문 안에 대입하여 비교할때의
!line_flag는 true가 되어야 하는것이 아닌가요?
line_flag는 false로 정의하였으니까요.
혹시나 싶어 while문에 line_flag가 다시 들어갈때
true로 다시 정의 되나 싶어서 디버깅을 해도 9번째 줄에 가도 line_flag는 false값으로 변함앖고
true로 다시 정의됐다고 하면 8번째 if문 안으로 못들어 가겠죠?
그래서 왜 8번째 안에 있는 line_flag만 true값을 가지고 있는지 궁금합니다
0
! 는 논리적 (logical) NOT 연산자입니다. (0 이면 1 로 1이면 0 으로 반대로 바꾸는 연산입니다)
( ! true ) == false 와 같습니다.
그래서 line_flag 가 false 일때는 반대로 true 가 되는 것이에요.





