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의 이미지

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

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.