1樓:匿名使用者
首先判斷y是否大於z,若大於,則執行 x+2這個語句,並把x+2的值賦給x
若小於,則先執行x-2,然後將x-2的值賦給x,
然後執行逗號表示式,得到的值為2(最後一個,但對結果沒有影響,由於=的優先順序要大於逗號表示式的優先順序,所以語句會先賦值,然後進行逗號執行)
2樓:匿名使用者
先執行(y>z)如果是真,則執行x=x+2,否則執行x=x-2,3,2。x=x-2,3,2後面的逗號為逗號運算子,按順序執行,結果為最後一個逗號後的內容。所以我認為如果執行這句的話結果應該是2
3樓:匿名使用者
表示式1,表示式2
逗號表示式的求解過程是先求解表示式1,再求解表示式2,整個逗號表示式的值是表示式2的值。
可以看出你給的表示式為一個(表示式3)?:表示式1:表示式2的結構,表示式3為真時值為表示式1的值,否則為表示式2的值.
據此x= (y>z) ? x+2:x-2, 3,2執行過程是先看y是否大於z,結果真執行x+2,假則為執行x-2,3,2.
從左至右執行.假設進入該語句是x=3,y=2,z=1,則結果為x=5,若y=2,z=3,則為2.
c語言中static變數的賦值問題
4樓:小夏在深圳
static int a = 0; // 執行期時初始化一次, 下次再呼叫時, 不進行初始化工作如下:
printf(「%d」,a);
a++;
int main()
staticlocalvar(); // 第一次呼叫, 輸出a=0
staticlocalvar(); // 第二次呼叫, 記憶了第一次退出時的值, 輸出a=1
return 0;
擴充套件資料
1、static對全域性變數的修飾,可以認為是限制了只能是本檔案引用此變數。有的程式是由好多.c檔案構成。
彼此可以互相引用變數,但加入static修飾之後,只能被本檔案中函式引用此變數。
2、static對棧變數的修飾,可以認為棧變數的生命週期延長到程式執行結束時。一般來說,棧變數的生命週期由os管理,在退棧的過程中,棧變數的生命也就結束。
3、但加入static修飾之後,變數已經不再儲存在棧中,而是和全域性變數一起儲存。同時,離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。
5樓:風清安有綢
如果是賦值初始值,那麼在程式執行初始就已經初始化了。
和全域性變數是一樣的。
但體現出來作用是在第一次呼叫。
至於後續賦值,隨便什麼時候都可以
想賦值的時候就賦值咯。
6樓:匿名使用者
呵呵,這就是靜態變數的功能啊,靜態變數只被初始化1次,所以不管幾次呼叫,它都不會再執行int c=3這行啦。而c的值就是你之前運算的結果
7樓:小魚
static定義的變數只有第一次被賦值,這之後會自然使用之前留下來的值了,不會每次都按3初始化的。:-)
8樓:匿名使用者
static變數與普通變數的區別就在於此
每次呼叫fun()函式,
函式開始時,初始化普通變數、分配記憶體,函式結束後,普通變數所佔用的記憶體就被釋放
而對於static變數,只是第一次呼叫時會初始化,函式體結束之後,static變數佔用的記憶體會被保留,從而變數的值不會發生變化,下次呼叫該函式,也不會重新初始化,而是保留上次的值
c語言的賦值問題,C語言指標的賦值問題
上面的說法中,都存在錯誤或不足.1.首先 c a b 的意義是把 a 和 b 這兩個變數的內容 5 和 6 相加得 11,再把 11 這個結果值傳送至 變數 c 所在的儲存單元儲存起來 而不是你想像的 將 a 和 b 這兩個變數組合為一個變數作為 c,或者複製一份變數組合再作為 c.當你用int a...
c語言符判斷問題,c語言 字元判斷問題
scanf s som 這句寫錯了,應該是 scanf s som int som 200 int 改成char int 無法用 s include stdio.h int main void 首先sim本身就是陣列的地址,所以不用加 當然加了也沒什麼問題,只是畫蛇添足。s和s應該就是型別的長度不同...
c語言指標如何賦值,c語言 指標如何賦值
一棵無所不知的小白菜 1 變數的指標就是變數的地址。存放變數地址的變數是指標變數。即在c語言中,允許用一個變數來存放指標,這種變數稱為指標變數。因此,一個指標變數的值就是某個變數的地址或稱為某變數的指標。2 為了表示指標變數和它所指向的變數之間的關係,在程式中用 符號表示 指向 3 定義指標變數.對...