| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:(x---y,--x-y),(x+++y,++x+y)中间的y,x值是怎么变的啊?
只看楼主 加入收藏
大新哥
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
(x---y,--x-y),(x+++y,++x+y)中间的y,x值是怎么变的啊?
#include <stdio.h>
void mian()
{int x=9,y=4;
    printf("%d%d\n",x---y,--x-y);
    printf("%d%d\n",x+++y,++x+y);
}
在运算的过程中,x,y的值是怎么变化的啊??
搜索更多相关主题的帖子: include 
2013-09-14 11:12
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:3 
先进行自增自减运算符,然后进行算数运算符,
图片附件: 游客没有浏览图片的权限,请 登录注册

Maybe
2013-09-14 11:29
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:3 
   只能说写种这程序来迷惑自己的人很无聊

三十年河东,三十年河西,莫欺少年穷!
2013-09-14 11:57
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:3 
属于编译器定义的结果,书上应该告诉你,这种代码不要写。否则这本书也不是一本值得看的书了。

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-09-14 13:23
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:3 
这种未定义行为有意思吗?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-14 14:06
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:3 
自己为难自己吗
何必.....

思考赐予新生,时间在于定义
2013-09-14 15:30
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:3 
考试很喜欢这样的题目,
所以 问这样的问题就很多了。没有办法的

工作上写这样的,会挨批的

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-09-14 17:10
guhemeng
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:100
专家分:165
注 册:2013-7-27
收藏
得分:3 
C语言里有强盗法则: 即每个变量都希望得到尽可能多的资源/操作。  所以  x+++y =>(x++)+y => x+y 再 x = x+1。  这法则在任何编译器上都是适用的。


至于++ 和逗号表达式综合在一起,就需要根据不同编译器来看了,有些编译器会先全部自加后再计算算术运算,而有些编译器会遵循:满足一个运算即执行运算。
例如:int i = 3;  int j = (++i)+(++i)+(++i);  j = 18 和 j = 16. 都是可能的。  18就不解释了, 为何出现16:  即有些编译器默认 (++i)+(++i) 满足一个运算,即先计算此表达式等于5+5 = 10,然后再++i,  即10+6 = 16。

综上:你可以按下面代码,研究下输出结果,你会觉得很好玩的~~~~~~~~~~~~
int main(void)
{
    int x=9,y=4;
    printf("%d\n",--x-y);
    printf("%d\n",x---y);
    printf("%d\t%d\n",x---y,--x-y);
    printf("%d\n",x+++y);
    printf("%d\n",++x+y);
    printf("%d\t%d\n",x+++y,++x+y);
}
2013-09-14 18:28
Rexfield
Rank: 6Rank: 6
来 自:幻想乡
等 级:侠之大者
威 望:1
帖 子:240
专家分:484
注 册:2010-7-28
收藏
得分:3 
翻C99运算符优先级和结合性,这都是标准C里面有的。

If you're not failing every now and again, it's a sign you're not doing anything very innovative.
2013-09-14 21:25
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:3 
同意8楼.

武功再高也怕菜刀.
2013-09-14 22:01
快速回复:(x---y,--x-y),(x+++y,++x+y)中间的y,x值是怎么变的啊?
数据加载中...
 
   



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

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