作者Parents (0oTDDSo0)
看板Examination
标题Re: [考题] C语言
时间Sun Dec 9 12:17:40 2012
※ 引述《jojonina (努力)》之铭言:
: 98身心障碍
: 求以下执行结果
: int i, j=2;
: i=(j=3) && 1 ;
: printf("%d %d \ n" , i, j);
: i=-1 || (j=5);
: printf ("%d %d \n", i, j);
: i=0 || (j=5);
: printf("%d %d\n", i , j); 非本科系 请问板上高手
: 这题 该如何下手呢?? 我知先用 逻辑运算子 判断 true 或 false
: 然後 呢??
: 请高手 指点 非常谢谢
不材第一次帮大家解答计概,若有错误,请四方各达高手不吝指教
此题考的逻辑运算概念
它具有一个很特别的现象就是"短路"现象
意思是说
以OR来说
前方若是True,後方的值无须变动
假若前方为FALSE,後方的值须在判断
以AND来说
前方只要为FALSE,後方的值无须探讨
举个例子
AND 只要一个否定说(0),答案结论肯定为0
OR 只要一个成立说(1),答案结果必为1
反知此方式建立在此问题上
注意一下优先权问题
()内记得先看
不材见解答案为
13
13
15
以上答案有错误,不吝指教~
感谢版上的高手与已赐教~谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.82.235.109
※ 编辑: Parents 来自: 115.82.235.109 (12/09 12:23)
1F:→ leiyan:true or false怎会变成3? 12/09 13:20
3F:→ Parents:好奇的点出来了~为何I = 1?? 12/09 14:25
4F:→ Parents:下一篇文章有更好的解答唷~ 12/09 14:27
5F:→ leiyan:我比较好奇你前面的说明正确但答案你还不知道为何错 12/09 14:29
6F:→ Parents:呵呵~我知道哪个环节出问题~程式码没看清楚~谢谢您的提醒~ 12/09 14:33
※ 编辑: Parents 来自: 115.82.235.109 (12/09 14:33)
7F:→ leiyan:"前方若是成立,後方无须变动"再改吧... 12/09 14:38
8F:→ a33445500:这题其实还有一个概念,就是运算的优先顺序 12/09 14:44
9F:→ Parents:我想请问l大这句话,为何需要改呢?短路现象不是这样吗? 12/09 14:50
10F:→ leiyan:答案参考2楼 那句话点出你错的地方 12/09 14:54
11F:→ Parents:小弟迂腐~盼请l大说明并指教~谢谢~ 12/09 15:07
12F:→ leiyan:i=-1 || (j=5);前面为1後面就会自动省略直接传1给i 12/09 15:10
13F:→ Parents:不好意思I=-1不是FALESE吗?还是只是不要是0都是True? 12/09 15:17
14F:→ silentlich:非0都是TRUE 12/09 15:25
15F:→ Parents:谢谢您们给予我最佳的解释,原来是这样子~盲点已解惑! 12/09 15:28
※ 编辑: Parents 来自: 115.82.235.109 (12/09 15:33)
※ 编辑: Parents 来自: 115.82.235.109 (12/09 15:34)