看到這段代碼的時候,想到這個printf輸出的值是多少? 若您想到的答案是1-2,真的是這樣嗎?
#include <stdio.h>int main(int argc, char *argv[]) {int i = 1;printf("%d-%d\r\n", i++, ++i);return 0;
}
先了解一個知識點:自增運算符i++ 和 ++i 的區別。
前綴自增運算符(++i), 它是先將i的值加1后,返回給表達式。
后綴自增運算符(i++),它也是將i的值加1,但是它是返回原始值給表達式,然后再將i的值增加1。
printf函數的輸出列表,從右到左執行,從左到右輸出
#include <stdio.h>int main(int argc, char *argv[]) {int a, b, c;printf("%d-%d-%d\r\n", a = 1, b = 2, c = 3);return 0;
}
輸出的結果1, 2, 3.
那我們來驗證開始的那段代碼。若你的答案是1-2?見證奇跡的時候到了
為啥是2-3呢?當printf遇到有計算的時候,他的執行順序是從右到左的。
當前我們看到的是i++, ++i。然而是實際上它的順序是++i,i++
你搞懂了嗎?