#include <stdio.h>
void main(void)
{
int first, sec = 1, third; // 변수의 명, 수형, 초기값은 수정 불가
first = 1;
/* (1) 아래 중첩 if() 문의 논리적 흐름을 좀 더 명확하게 보이도록(가독성을 높이기 위함)
소스 코드를 수정 개선하라. 단, 논리 흐름이 달라지면 안됨. 즉, 수정 이전과 이후의 실행
결과가 동일해야 함. */
if (sec < 0)
{
first = 3;
}
if (sec > 0)
{
first = 1;
}
else first = 5;
printf(" % d \n", first);
/* (2) 화면에 표출된 실행결과를 보고 그 결과가 나오게 된 프로그램 실행의 논리적 흐름을 설명하라. */
// 1. 첫번째 if문의 조건 -> 부적절 -> 다음 if문으로
// 2. 두번째 if문의 조건 -> 적절 -> else를 건너 뛰고 바로 printf로
if (third = sec == 0)
{
first = 5;
}
else first = 3;
printf(" %d %d \n", first, third);
/* (3) 두 변수의 값을 화면에 표출하여야 함. 어떤 값들이 화면에 표출되는지 그 결과
의 논리적 흐름을 설명하라. */
// 1. 만약에 third = sec == 0 인가 -> 아님
// else에 따라 first는 3 third는
}
여기서 third가 왜 0이 나오는 건가요?
디버거 돌려서 third에 뭐가 들어있나 보셈 ㅇㅅㅇ
오.. 방금 f9으로 뭔갈 할 수 있다는걸 처음 알았어요 third 에 int형식으로 값이 0이 들어가 있네요
누가 이렇게 ㅈ같이 짜냐? - dc App
학교나 학원에서 오류나는 코드 주고 고치라고 학습시키는 것 같음 ㅇㅅㅇ
third=sec==0에서 sec==0이 false이니 third는 0대입됨 - dc App
아하 감사합니다
대입끝나면 if(third)에서 third가 0이니 if문 건너뜀 - dc App
감사해요