标题:确实没想明白,哪里有逻辑运算顺序
只看楼主
夏秀蔓
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-3-23
结帖率:0
已结贴  问题点数:20 回复次数:9 
确实没想明白,哪里有逻辑运算顺序
main()
 {int x=0,z,y=z=-1;      
 x=x---z-y;
 printf("x=%d\n",x);
 }输出结果是:
搜索更多相关主题的帖子: 逻辑运算 顺序 int 输出 结果 
2017-06-13 11:38
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:5 
x=x---z-y;//--- 的--是x的后缀?还是z的前缀?这逻辑还没问题?要怎样才叫 有问题?

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-13 11:40
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
程序代码:
//这垃圾代码写的,似乎很谭浩强。
main()

 {int x=0,z,y=z=-1;      

 x=x---z-y;

 printf("x=%d\n",x);

 }


[此贴子已经被作者于2017-6-13 11:43编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-13 11:42
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:5 
是不是3?没运行,目测的
2017-06-13 11:46
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 4楼 yangfrancis
这代码都能得出结果,你真牛,小弟无限膜拜。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-13 11:48
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
看了二楼的才发现,这个优级问题还没解决呢
2017-06-13 11:52
HOUSAND
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2016-8-14
得分:5 
这是C的代码吗?
2017-06-13 18:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
以下是引用夏秀蔓在2017-6-13 11:38:55的发言:

main()
 {int x=0,z,y=z=-1;      
 x=x---z-y;
 printf("x=%d\n",x);
 }输出结果是:


x=x---z-y; 与 x = x-- - z - y; 是一致,不能解释为:x = x - --z - y;。

“C语言有这样一个规则:每一个符号应该包含尽可能多的字符。也就是说,编译器将程序分解成符号的方法是,从左到右一个一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组 成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不再可能组成一个有意义的符号。”

2017-06-14 06:04
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回复 8楼 吹水佬
你的说法,我在C缺陷与陷阱中看到过,但是这本书出书的时候,连C89都还没出台,也就是说是K&R C。

因此是否还适用于C89之后的标准,值得研究。

奥……你复制的就是C缺陷与陷阱中的句子。

我编译了这垃圾代码:GCC得到的结果是 2,外带一个警告。VS2015得到的结果是 1。



[此贴子已经被作者于2017-6-14 09:06编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-14 08:27
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 9楼 renkejun1942
“VS2015得到的结果是 1。”
这家的东西喜欢玩个性。
2017-06-14 09:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477883-1-1.html




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

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