作者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)
1F:推 mica0930:第二题最後 i有要指定给j吗??题目没写= =? 11/20 21:00
2F:→ mica0930:打错= =是j指定给i 11/20 21:02
3F:推 chchwy:i=(j=3) >> 1; 右边一大串算完当然会指定给i阿 11/20 22:42
4F:推 daniel114:辛苦了~ 11/20 22:56
5F:→ WAYS22275:感温~ 11/21 02:44