| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2187 人关注过本帖
标题:有人理解我的疑问吗?请教前辈指教。
取消只看楼主 加入收藏
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
有人理解我的疑问吗?请教前辈指教。
不能发图,我直接打字。

内容范围:
C语言只对4个运算符规定了它们对应多个操作数的定值顺序,分别为:与运算符&&、或运算符||、逗号运算符,、条件运算符?:

不懂的内容原文1:
除了运算符"&&" 、"||" 、 "?:" 和 "," 之外,如果设计的程序还依赖于其他运算符的操作数的定值顺序,这样的程序往往会出现错误,因为编译器对操作数的定值顺序与你想像的并不一样。
本人疑问:
这是否说明 (a == 1) && (b != 0)或直接 a==1 || b!=0 这样的表达式是会出现错误的?而且它后面提到的编译器操作就更不明了。
不懂的内容原文2:
除了运算符"&&" 、 "||" 、 "?:"和","之外,如果程序还依赖于其他运算符的操作数的定值顺序,那么程序的功能会随着编译它的编译器的不同而不同。
本人疑问:
第一点都不懂了,那这第二点说编译器不同有不同结果的情况,跟++重复于一个表达式里出现的错误属于一样的现象吗?

确实不懂,消化不了,往有人明白含义并指点一二,谢谢!

搜索更多相关主题的帖子: 编译器 表达式 C语言 而且 
2015-03-17 21:31
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 2楼 code力力
谢谢,这个明白,但我看的书出现了这样的描述导致了我的困惑。正如第一条疑问
 (a == 1) && (b != 0)或直接 a==1 || b!=0
这会导致错误或看编译器面色吗?还是我理解错了?
2015-03-17 22:44
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 楼主 kin3z
这段描述出自
《C大学教程(第五版)》(美)戴特尔
187页里的
常见的编程错误5.17

可移植性提示5.2


2015-03-17 22:47
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 5楼 TonyDeng
常见的编程错误 5.17
除了运算符“&&”,“||”,“?:”和“,”之外,如果设计的程序还依赖于其他运算符的操作数的定值顺序,这样的程序往往会出现错误,因为编译器对操作数的定值顺序与你想像的并不一样。
可移植性提示 5.2
除了运算符“&&”,“||”,“?:”和“,”之外,如果程序还依赖于其他运算符的操作数的定值顺序,那么程序的功能会随着编译它的编译器的不同而不同。

以上为原文了。。。前面还有一段关于此方面的说明,截取如下:
C标准只对四个运算符规定了他们对应的多个操作数的定值顺序,这四个运算符分别是:与运算符(&&),或运算符(||),逗号运算符(,)和条件运算符(?:)。前三个运算符属于二元运算符,他们对应的两个操作数的定值顺序都是从左向右的[注意:用来分割运算符的逗号不是逗号运算符]。最后一个运算符是C语言唯一一个三元运算符,它总是首先计算最左边操作数的值。如果最左边操作数的值为非零,则计算中间那个操作数的值,而最后那个操作数将被忽略掉。如果最左边操作数的值是零,则计算第三个操作数的值,而中间那个操作数将被忽略掉。
常见的编程错误 5.17
。。。。
2015-03-17 23:54
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 8楼 TonyDeng
哦,明白你的意思,大概就是"短路问题"。
不过我看这书里的内容的确有点旧,甚至现在还主要在C89里转。
至于那些||和&&,倒是很平常的吧,不至于花巧,例如:是否01这个班级,是过60还是小过60分的,我大概也会这样写:
A == 01 && b >= 60
如果日后需要添加过60分的,或则属性C为真的特长生(无视成绩),我则需要这样写:
A==01 && (b >= 60 || C == 1)
而非
A==01 && b >= 60 || C == 1
这大概就是我那不明白的句子所表达的吧。。。。

最后谢谢各位帮助,尤其是版主,你的确让我佩服你的技术过硬。
但不过版主,别太多仇善感地,而且别一杆子打一船,代码就是代码,运行速度快,可靠,好维护,功能全面等等就是目的,别想太多,我才新手,不会你说的那些花巧技巧。 -__-!!



[ 本帖最后由 kin3z 于 2015-3-18 00:55 编辑 ]
2015-03-18 00:36
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 10楼 lovegh
哎呀,你中枪了亲,打了分给你了。。。
原想平均给2位大大的。。。
选的是平均分配 - -
2015-03-18 01:06
快速回复:有人理解我的疑问吗?请教前辈指教。
数据加载中...
 
   



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

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