| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2350 人关注过本帖
标题:求助 C语言 关于逻辑值的问题
只看楼主 加入收藏
c759541810
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-2-4
结帖率:0
收藏
 问题点数:0 回复次数:3 
求助 C语言 关于逻辑值的问题
请对比看以下的两道题:
1. 设有条件的表达式:(EXP)?i++;j++,则以下表达式中与(EXP)完全等价的是:
A.(EXP!=0)     B.(EXP==1)   答案是A。
2.设有定义:int k=1;假如有k=k>=k,  则k=___     答案是1.

问题1.书上说逻辑表达式若为真,值为1,假值为0,那在第1题中A和B应该是等价的呀,为什么答案B不对?

2.有的书上说像这样的语句     (3)?a:b;  最后结果肯定是a,那我想问判断数字3的真假怎么判断呢? 不是真的值为1,假的值为0 么?  那在条件判断中写 除了1,0其他的数字肯定是不对的啊????  要这个成立,那不就是 为真的条件可以用各种非0的数表示,那书上怎么说逻辑真的值用1表示呢???

3.在第1题中  EXP为真 和 EXP的值为1  和 EXP==1,   这三者到底是什么关系?这三者有什么区别???
  请逐条回答,我到底是哪里掌握不好,理解错了呢?请说清楚一点   谢谢
搜索更多相关主题的帖子: 其他 C语言 表达式 
2012-02-04 00:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不是你掌握不好,是你看的書上沒說清楚。

授人以渔,不授人以鱼。
2012-02-04 00:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
傳統的C僅規定0為假,非0為真,邏輯假值是確定的,但邏輯真值是不確定的,因此要表示真,只能用非假,即數集中除0以外的任何數均可表示真。但隨著語言的發展,用數值表示邏輯的做法有很多弊端,因此C標準作了修改,新增邏輯數據類型bool,其中內定0為假,1為真,取代舊式的表示法。這個時候,編譯器在執行判斷語句時,使用的是0/1判斷,而不是傳統的0/!0判斷。對三目運算符?:這樣的表達式,要求將第一個表達式轉化為0/1形式,如果執行機器沒有把運算結果非零歸化為1,那麼編譯器會生成一個看似多餘的指令做這件事,這樣,三目運算符表面上看起來很高效,其實不及傳統的if/else來得簡捷(因為if語句本身就限定執行結果必須是0/1,而三目運算符的第一個表達式結果可以為任何值)。

現代編譯器,仍然兼容傳統的C語法,允許寫if(3)等效於if(true),但其實是不提倡的,看什麼時候徹底不支持它而已。其實,這種變化歷史上都發生過,典型莫如int的位數,曾經(甚至至今)都有後遺症,但現實就是這樣殘酷,要漸成大勢的64位機器再去勉為其難地支持16位int運算,是沒有道理的。

授人以渔,不授人以鱼。
2012-02-04 01:02
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
楼上的台湾人?怎么是繁体啊

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2012-02-04 14:10
快速回复:求助 C语言 关于逻辑值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016141 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved