可能重複:
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?我期待最後一次「不加入」爲零,中間的「不加入」爲1.
有人可以解釋表達式的順序是什麼,爲什麼我們看到這個值?
它實際上是「未指定」,與「未定義」明顯不同。 – cnicutar
@cnicutar:我的答案已經表明它是未指定的,在這種情況下未指定的行爲會導致未定義的行爲。 –
必須看到早期版本 – cnicutar