-
事實上,通過在公式的第一部分新增括號,閱讀起來要容易得多! 他們是一樣的!
k=(x++>=0)&&y--<=0)||z=x+y) 這裡的第乙個 = 符號、&& 和 ||根據運算子的優先順序,將整個方程分為四部分,&&&和||。操作級別與從左到右的順序相同,當左邊的運算公式為真(=1)時會執行&&運算子,所以右邊的運算會執行,所以x++>=0的運算是-1後執行>=0是false,所以句子y--<=0不執行,而是z=x+y=0+5=5,最後z=0||1=1
k、x、y、z 分別為 1、0、5、5
-
書中的答案沒有錯,我跑了一下,結果也是1,0,5,5有乙個誤區,認為z=x+y的布林值不是0,而是1,所有賦值語句的布林值都是,因為&&&比||的優先順序。 所以 k 等於 1
我用乙個程式測試了一下,發現 x++>=0 首先確定 x 是否大於 0,然後再確定 ++。
我只能在這裡解釋一下,其餘的我不太明白為什麼。
您可以使用該程式檢視為什麼 y=5,z=5
-
為什麼乙個問題必須問兩個問題?
答案如下:
-
對於這類問題,單從句法分析來看,程式的執行會有所不同,char **pstr; 定義為 char 型別的輔助指標; 賦值以相同型別為條件,或者可以在它們之間自動轉換型別。
是的。 1) *pstr,它將第一級指標與 * 合併,因此 *pstr 是指向 char 型別的指標。即有 *pstr 型別是 char*,並且 ,"hi"它的型別是 char,可以轉換為 char *,可以分配。
與 char *p, a[5] 相同; p=a; 從語法上講,這是正確的。
2) pstr 是輔助指標,其型別為 char **hi"它的型別是 char,可以轉換為 char *,但顯然 char ** 和 char* 不能相互轉換,所以它實際上是錯誤的。
3)**pstr,它用**溶解指標,它是char型別,2)同樣,char和char或char *顯然不能相互轉換,所以它們實際上是錯誤的。
-
printf("%d",x-
;這裡是輸出 x 的表示式的值--,但這裡因為是自遞減表示式,而 x 在左邊,所以表示式的值還是 x 的值,所以執行了 output 語句,輸出結果為 3,然後執行。
while(!x);因為這是反的,結果是0,也就是false,所以程式執行了,當然前提是你ubt
x=3;這應該是 int 型別,對吧?
for 迴圈的定義。
for(變數的初始值; 終止操作條件; 第乙個迴圈 i 的初始值為 0,一直執行到 i=3 停止 i=2,條件仍然滿足,迴圈體仍然執行,每次步長為 1+1 >>>More
main() [主要函式主程式]。
int i,j,k;【定義整數資料 i,j,k】for(i=1; i<=6;i++) 主迴圈,i 從 1 到 6,增加到 1] for(j=1; j<=20-2*i;J++) 子迴圈,J 從 1 到 20-2*i >>>More