//구구단
#include<stdio.h>
int main(void)
{
int val, i=0;
printf(\"출력하고자하는 구구단은 몃단: \");
scanf(\"%d\", &val);
while(i<10)
{
printf(\"%d x %d = %d \\n\", val,i ,val*(++i));
}
return 0;
}
인데 내생각엔 첨엔 i=0이니까
만약 5단을 출력 할경우
반복문안에 보면
5 x 0=5 //5*1
5 x 1= 10 //5*2
.
.
이런식으로 나갈것같은데ㅋ 외냐하면 첨엔 i=0이니까
프린트 문에 val은 5출력 i는 첨에 0 출력 그다음 val*(++i)이 5 출력 될꺼 같아서..++i가 선증가 후연산이니까
근게 실행해보면
5 x 1= 5
5 x 2= 10
.
.
.
5 x 10 =50
이라고 제대로 나오네... 외그런지 알려주3 고수님들;
ㅎ 랑 ㅋ 랑 다 지우고 글 다시써. 그럼 글 봐줄께.
아 죠낸 궁금해 ㅎㅋ지웟엌 좀 봐죠ㅠㅠ
printf에선 콜링컨벤션 때매 뒤에부터 실행하니까...val*(++i)) 요거 다 실행하고 i 부르거덩..
너가 제대로 썼잖아.. 써놓고도 모르냐.. i가 선증가 후연산이니깐 0이 아니고 1로 나오는거잖아.
함수 호출시에 evaluation의 순서는 표준에 명시되어 있지 않음. 따라서 저 코드는 undefined behaviour가 됨.
아 printf가 뒤에서 부터 실행이되는군아.. 콜링컨벤션이 머임? 뒤에서 부터 실행된다면 말이되네연;;;
i++ 후위연산자 ++i 선위연산자? 지금 문법에 쓰인건 ++i 그 라인이 들어오면서 더하기 하고 난 다음 다른 일을 시작한다는거...
반대로 i++후위연산자는 그 라인에서 하는 일을 다 ~ 하고나서 i변수를 더하기 해준다는거
I will use Google before asking dumb questions.