インクリメントについて疑問

「C/C++」の検索結果 - mad日記
↑見てて思ったんだけど、

int i = 7;
printf("%d", i++ * i++);

が49になるのはどうして。
インクリメントってその変数に1を足すんじゃなかったっけ。
なので

int i = 7;
printf("%d", i++ * i++);

は8×8で

64

がでるんじゃないの?って思ってやってみた。

#include <stdio.h>

int main (void)
{
 int  i = 7;
 printf("%d",i++ * i++);

return 0;
}

49

がでた。あれ。俺がちがってたのかな。

#include <stdio.h>

int main (void)
{
 int  i = 7;
 printf("%d",i++);

return 0;
}

7

がでた。やっぱりインクリメントに対する認識間違ってる?と思いjsでやってみた。

var i = 7;
i++*i++;

56

おや。なぜ56?

var i = 7;
i++;

7

やっぱり1が足されてないぞ。
ってか56ってどっからでてきた(笑
7×8になってるじゃん。
ってことはやっぱり1足してるよな。。。
おやおやおや><
php

<?php
$i = 7;
print($i++ * $i++);
?>

56がでる。
っとここまできたところで理由が分かった!

i++

は変数の値を表示した後に1を足すんだってさ!

#include <stdio.h>

int main (void)
{
 int  i = 7;
 printf("%d",i++);
 printf("%d",i);

return 0;

}

7ときて次に8がでた。
なるほどなるほど。

var i = 7;
alert(i++);
alert(i);

も同じように
7ときて次に8がでた。
だから56がでたのか。

あれ、でもそれなら

#include <stdio.h>

int main (void)
{
 int  i = 7;
 printf("%d",i++ * i++);

return 0;

}

も56がでなきゃおかしいぞ。
なぜだ><

ついでにpythonも。。。ってインクリメントできないんだ。

↓見つけた!
初級C言語Q&A(7)

奥が深いということがわかった。