看到一段代碼,被坑了。
#include <stdio.h>int main(void)
{int a = 7;printf("%d\n", a++);printf("%d\n", a--);printf("%d\n", -a++);printf("%d\n", -a--);printf("%d\n", a);return 0;
}
?
結果為
-a++的邏輯應該為,a的值取反得到的值打印出來,然后a自加1,注意,不是a取反后自加1,因為printf()里的運算除了自加自減,別的運算符都不會影響變量自身的值。
例如
#include <stdio.h>int main(void)
{int a = 7;//printf("%d\n", a++);//printf("%d\n", a--);//printf("%d\n", -a++);printf("%d\n", -a);printf("%d\n", a);return 0;
}
結果為
?
還需要特別注意的是,printf(“格式控制字符串”,輸出表)對于輸出表中各個量的求值順序是從右往左進行的。
#include <stdio.h>int main(void)
{int i = 8;printf("%d, %d, %d", i++, -i++, -i--);return 0;
}
結果是
因為從右往左,所以先給最后一個%d打印-i即-8,然后i--,i=7;接著給第二個%d打印-i即-7,然后i++,i=8;最后給第一個d%打印i即8,然后i++,i=9。