精華區beta NTUE-CS100 關於我們 聯絡資訊
順便解一下題目 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