考查逗號表示式
main()這段程式的輸出是:
(a) c=3 d=3
(b) c=5 d=3
(c) c=3 d=5
(d) c=5 d=5
應該選c。
c語言提供一種特殊的
運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如:(3+5,6+8)稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60。
逗號表示式的形式如下:
表示式1,表示式2,表示式3,...... ,表示式n
逗號表示式的要領:
(1) 逗號表示式的運算過程為:從左往右逐個計算表示式。
(2) 逗號表示式作為乙個整體,它的值為最後乙個表示式(也即表示式n)的值。
(3) 逗號
運算子的優先級別在所有運算子中最低。
題目:以下程式的輸出結果是:
main()
[a]2,3,3 [b]2,3,2 [c]2,3,1 [d]1,1,1
解析:x和y的值經過自增以後分別為2和3,d可以排除。剩下3個選項選擇什麼呢?
如果是(x++,y++,++y)實際上可以看成(1,1,3)整個逗號表示式的值應該是3,那麼選a。
如果是(x++,++y,y++)實際上可以看成(1,2,2)整個逗號表示式的值應該是2,那麼選b。
但這是錯的,這兒還有
賦值運算子。
賦值運算子的優先順序是14,而逗號表示式的優先順序是15,也就是說上面的表示式中應該等價於這樣的結合:(z=x++),y++,++y;如果這樣寫的話,則答案很清晰,為:2,3,1
正確答案選c。
main()這段程式的輸出是:
(a) i=4 j=2
(b) i=3 j=2
(c) i=3 j=4
(d) i=3 j=6
選c。參考 sizeof用法彙總
嵌入式 筆試題
指出下列程式的執行結果 int main memcpy a 3,a,5 for int i 0 i 10 i return 0 解答 0 1 2 0 1 5 6 7 8 9 注意 1 陣列a作為引數時,轉化為普通指標 a 3 按照char長度計算 2 memcpy的原型是 void memcpy v...
嵌入式筆試題(3)
1 設float a 2,b 4,c 3 以下c語言表示式與代數式 a b c計算結果不一致的是 a.a b c 2 b.1 2 a b c c.a b c 1 2 d.c 2 a b 2 為了向二進位制檔案尾部增加資料,開啟檔案的方式應採用 a.ab b.rb c.wb d.wb 參 d r代表r...
華為嵌入式筆試題
華為嵌入式軟體開發筆試題 在一字串中使用 隱藏敏感字元?include stdio.h intmain ys len i printf 請輸入 scanf s c b j while b j mg len j 1 測試用的輸出 printf b 0 c n b 1 printf mg len d n...