C中調(diào)用函數(shù)之前的參數(shù)求值順序在C中調(diào)用函數(shù)參數(shù)時,可以假定函數(shù)參數(shù)的賦值順序嗎?根據(jù)下面的程序,當(dāng)我執(zhí)行它時,似乎沒有一個特定的命令。#include <stdio.h>int main(){
int a[] = {1, 2, 3};
int * pa;
pa = &a[0];
printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa), *(pa++),*(++pa));
/* Result: a[0] = 3 a[1] = 2 a[2] = 2 */
pa = &a[0];
printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa++),*(pa),*(++pa));
/* Result: a[0] = 2 a[1] = 2 a[2] = 2 */
pa = &a[0];
printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa++),*(++pa), *(pa));
/* a[0] = 2 a[1] = 2 a[2] = 1 */}
3 回答

www說
TA貢獻(xiàn)1775條經(jīng)驗 獲得超8個贊

慕虎7371278
TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊
函數(shù)指示符、實際參數(shù)中的實際參數(shù)和子表達(dá)式的計算順序未指定,但在實際調(diào)用之前有一個序列點。
pa
$ gcc -Wall -W -ansi -pedantic test.c -o test test.c: In function ‘main’:test.c:9: warning: operation on ‘pa’ may be undefined test.c:9: warning: operation on ‘pa’ may be undefined test.c:13: warning: operation on ‘pa’ may be undefined test.c:13: warning: operation on ‘pa’ may be undefined test.c:17: warning: operation on ‘pa’ may be undefined test.c:17: warning: operation on ‘pa’ may be undefined test.c:20: warning: control reaches end of non-void function

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗 獲得超8個贊
int i=1;printf("%d %d %d\n", i++, i++, i);
2 1 3
1 2 3
2 1 3
1 2 3
1 2 3
1 2 3
- 3 回答
- 0 關(guān)注
- 601 瀏覽
添加回答
舉報
0/150
提交
取消