重複の可能性:
Order of evaluation in C++ function parameters
Parameter evaluation order before a function calling in Cこの現象を説明してください。
:~/work_space/cprogs$ !cat
cat expression_associativity.c
#include<stdio.h>
int main()
{
int i = 0;
printf("\n no-incr:%d pre-incr:%d post-incr:%d no-incr:%d post-incr:%d no-incr:%d \n", i, ++i, i++, i, i++, i);
return 0;
}
:~/work_space/cprogs$ !./
./expression_associativity
no-incr:3 pre-incr:3 post-incr:1 ***no-incr:3*** post-incr:0 ***no-incr:3***
:~/work_space/cprogs$
なぜ最後と3として印刷途中 "無INCR" の値がありますか?最後の「no-incr」は0、中間は「no-incr」は1であると予想していました。
実際には「未定義」です。これは「未定義」とは著しく異なります。 – cnicutar
@cnicutar:私の答えは、それが未指定であると述べています。この場合、不特定の動作は未定義の動作に終わります。 –
以前のバージョンを見たことがある – cnicutar