C언어 아주 초보적인 질문좀 다시보니까..

min2to의 이미지

오늘 새로운걸 보았네여 그전에는 읽다가 책에서 않보였던게..
/////////////////////////////////////////////////////////////////////
#include

int main(void)
{
int val=10;
int val1=(val--)+2;

printf("val: %d\n", val);
printf("val1: %d\n", val1);

return 0;
}

////////////////////////////////////////////////////////////////////

val:9
val1:12

어떻해 이렇게 값이 나오나여?....
val값을 "val1=(val--)+2" 뒷쪽에서 감소시키는데.. val값까지 어떻게 영향을 받는지.;;
이해가 않가네여 순서도 좀 알려주셨으면 합니다;;
///////////////////////////////////////////////////////////////////
int gkgk=10;
printf("%d\n",gkgk++) // 답 10
printf("%d\n",gkgk) // 답 11
///////////////////////////////////////////////////////////////////
이런 연산은 알겟는데.. 저위에같은 연산은 어떤순서로 연산이 이루어지는지
솔직히 말해서 모르겟습니다;;

ole2000의 이미지

+2 연산할때 val--하고 다시 printf에서 호출이 되는거니까 --가 적용된 상태에서..
당연히 9가 나오죠
그리고 밑에 gkgk++는 프린터아웃 한 다음에 증가하는거죠..

Be cool...

Be cool...

min2to의 이미지

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

이해가 않가여.... 위에꺼 순서도 좀 그려주시면 ㅠ.ㅠ...

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

GunSmoke의 이미지

postfix 연산자인 ++이나 --는 결과를 먼저 리턴하고 값을 증감시킵니다.

大逆戰

大逆戰

min2to의 이미지

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

int val=10; //val 10값
int val1=(val--)+2; //val-- 10값에서 printf("%d",val) 9
//10+2 printf("%d",val1) 12

이렇게 하는게 맞는지요?.. ()라 햇갈려서여;


모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

superkkt의 이미지

제 생각엔 여기에 질문 올리는것보다는 책에서 전/후위 연산 부분을 찾아서 정독하는게 이해하시기가 더 빠를것 같습니다. 어떤 책이던지 전/후위 연산은 다 설명을 하고 있고 직접 이래저래 소스코드를 변경하면서 테스트 해보면 이해가 되실겁니다.

======================
BLOG : http://superkkt.com

======================
BLOG : http://superkkt.com

오리의 이미지

int val1=(val--)+2; // val1 = val + 2 그후에 val-1

저도 헷갈려서 저런식으로는 안씁니다.

min2to의 이미지

오리님 감사합니다 으궁.. ;; 머리아파~

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다