作者chchwy (mat)
看板NTUE-CS100
標題Re: [課業] 程設重點提示
時間Tue Nov 20 02:34:20 2007
順便解一下題目
4-36頁
想自己做看看的
就先不要看答案了
第二題
i=(j=3) >> 1; //小括號先做 j=3
i=j>>1; //再來是shift,j往右shift一位, 二進位0011 -> 0001 所以j是1
i=j; //指定最後做,j=1指定給i,
Ans i=1 , j=1
第三題
int i=3,j=5;
i += j -= 2 - 1; //指定最後,所以2-1先做
i += j -= 1; //j=j-1,j變4
i += j; //i=i+j,i變7
Ans i=7 , j=4
第四題
int i=3,j=2,k=1
k += --i + j--; //一元運算子先做--i,i變2
k += i + j; //j--本行結束後才做,所以拆出來放下面。
j--;
k+= i + j; // i+j=4
j--;
k+=4; //k=k+4,k變成5
j--;
j--; //j變1
Ans i=2, j=1, k=5
第五題
20>>1+1<<1*3 //乘除先
20>>1+1<<3 //再來加減
20>>2<<3 //最後shift 20轉成二進位010100 右移兩位 000101
20<<3 //000101又左移三位 101000轉成十進位是40
Ans.40
第六題
int i=10;
i += 1.34; //i=10+1.34 -> i=11.34 整數運算,小數點切掉
Ans. i=11
第七題 //NOTE: c的邏輯運算0=false 非0=true
int a=0, b=1;
(1)!a && !b //!先做 a變1 b變0
1 && 0 // (1 AND 0)=0
Ans.0
(2) !a||b //a變1
1||1 // (1 OR 1)=1
Ans.1
(3) a&&a&&b //由左往右 先做a&&a=0
0&&b //任何東西跟0做AND,結果都是0,所以&&右邊不用看了。
Ans.0
(4) a||b||a //由左往右 先做 a||b=1
1||a //任何東西跟1做OR結果都是1,||右邊不理它。
Ans.1
第八題
int a=0,b=0,c=0;
(1)a<b+4 //b+4先做 邏輯後做
a<4 //a=0 所以a<4沒錯
True
(2)b==c //b是0 c也是0 相等沒錯
True
(3)a+b+c==-3*-b //先乘除 (-3)*(-0)=0
a+b+c==0 //再加減 a+b+c=0
0==0 //兩邊相等 沒錯
True
(4)a&&b //0是false
0&&0 //
False
第九題 //這題大概是到目前為止最難的
int b=0,c=0;
(1)!b*4||4-3 //!先做 b=0是false 轉過來變1 (true)
1*4||4-3 //乘法
4||4-3 //加減
4||1 //最後邏輯 非零項都是true
Ans.1
(2)!c-!!b+!0 //!b, !c !0先做
1-!1+1 //!1再做一次
1-0+1 //最後加減
Ans.2
我累了....最後一題看誰要補完XD
對了 我沒有程式跑驗證 寫錯的話要告訴我阿
--
夜精小德
Char - 巨龍之喉 (前
月神殿) PvP
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.68.15.109
※ 編輯: chchwy 來自: 203.68.15.109 (11/20 02:54)
推 mica0930:第二題最後 i有要指定給j嗎??題目沒寫= =? 11/20 21:00
→ mica0930:打錯= =是j指定給i 11/20 21:02
推 chchwy:i=(j=3) >> 1; 右邊一大串算完當然會指定給i阿 11/20 22:42
推 daniel114:辛苦了~ 11/20 22:56