왜 이렇게 나오는지 이해가 잘 가지 않네요. 부탁드리겠습니다...
세련
정리가 잘되지않은점 양해바랍니다.
#include stdio.h
int main (void)
{
int a,b=0;
printf(입력:);
scanf(%d,&a);
while (b++a)
{
printf (%d,b);
b*3;
}
return 0;
}
우선 a값에 5를 입력한다고 가정하겠습니다.
그럼 while문은 b가 0이니까 a값인 5보다 작죠?
그래서 참이되고 반복문을 실행해서
b가 a의값인 5가 될때까지 ba란 조건이 거짓이될때까지 b의값에 1씩 더하는걸반복을 하잖습니까?
그렇다면 그과정은
b가 0이고, a보다 작으니 참. 반복문실행
++되어서 b의값은 +1이되어서 프린터문엔 1이출력되고
b*3이되면 b는 3이되잖습니까?
아직 b는 a의값인 5보다 작으니 반복문실행.
b의값은 3에서 +1이되어서 4가되고 프린터문엔 4가출력이되고
b*3을 하면 b의값은 12가되고,
b가 a보다 커져버려서 b++a의 값은 거짓이되어서 while문을 빠져나갑니다.
그리고 종료가 되겠죠.
그러면 컴파일을 실행해서 출력된것을 보면, 1과 4가 출력이 되어야 하는데
출력결과를보면 12345가 나옵니다.
스크린샷 첨부하겠습니다.
제가 정말 이해안가는게 생기면 무조건 이해가되야 직성이풀려서
웬만한거는 그냥 넘어가지만 이건 어떻게되서 이런값이나오는지 궁금해서,,,
죄송하지만 부탁드리겠습니다...
-
시내 2025-05-08
두분다 정말 감사드립니다... 순간 *=를 해야되는걸 그냥 *해버렷네요... b*3한값은 그냥 리터럴상수가되서 메모리값에 저장만되고 소멸되버렷던거네요 그래서 두줄의위치를 바꿔도 12345가 나온답니다 ㅋㅋ
수다님 정말 감사드립니다! -
다스리 2025-05-08
b가 a의값인 5가 될때까지 ba란 조건이 거짓이될때까지 b의값에 1씩 더하는걸 반복을 하잖습니까?
----------------------------------------------------------------------------------------------
위 소스에서는
#include stdio.h
int main (void)
{
int a,b=0;
printf(\입력:\);
scanf(\%d\