#include<stdio.h>
int main()
{ int a=0,*p;
p=&a;
a=(*p)++;
printf("%d%d",a,*p);
return 0;
}
程式為何輸出的是00,而不是11?
uj5u.com熱心網友回復:
a=(++(*p));這樣寫
uj5u.com熱心網友回復:
在C語言里面都是未定義行為 結果沒意義
uj5u.com熱心網友回復:
后置++是先運算再++,也就是說下次呼叫的時候才++。uj5u.com熱心網友回復:
什么編譯環境?VS2015跑11uj5u.com熱心網友回復:
VS2017也跑11。可能GCC編譯器結果是00。后置++運算子優先級高于=,所以最后一步才應該是給a賦值為0,按理說結果是00。
https://c.runoob.com/compile/11 在線編譯,結果是00。
年輕人別浪費時間研究這些,盡量避免這種寫法(不同編譯器結果不同)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/81112.html
標籤:C語言
上一篇:求大神幫我看一下
