我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 求助解释一道c++题目! 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ seek /si:k/ n. 寻求,寻找,请求,要求,试图 ]


求助解释一道c++题目!

Quote:

#include<iostream.h>
#include<stdio.h>
#include<memory.h>
void main()
{
    int x=20,y=35;
    x=y++ + x++;
    cout<<x<<y<<endl;
    cout<<"**************"<<endl;
    y= ++y + ++x;
    cout<<x<<y<<endl;
}

为什么结果是:5636
                          ***************
                            5794
        ???


[ 此贴被ljpdxj在2007-10-17 21:39重新编辑 ]
顶端 Posted: 2007-10-17 21:30 | [楼 主]
ready





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 159
威望: 0
浮云: 1455
在线等级:
注册时间: 2006-03-03
最后登陆: 2008-06-29

5come5帮你背单词 [ greek /gri:k/ a. 希腊(人)的;n. 希腊人,希腊语 ]


Re:解释一道c++题目!

优先级,++在后面为先用后自加,第二为y=(++y)+(++x)
顶端 Posted: 2007-10-17 21:41 | [1 楼]
xcself





性别: 帅哥 状态: 该用户目前不在线
头衔: 原来我可以……
等级: 人见人爱
家族: 考研俱乐部
发贴: 3172
威望: 0
浮云: 471
在线等级:
注册时间: 2007-03-18
最后登陆: 2012-03-04

5come5帮你背单词 [ forge /fo:d3/ n. 锻工车间,锻炉;锻造,伪造 ]


其实是56 36    57 49
写错了是94


[ 此贴被xcself在2007-10-17 23:30重新编辑 ]
顶端 Posted: 2007-10-17 21:45 | [2 楼]
ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ culture /'kΛltə/ n. 文化,文明;教养 ]


Quote:
引用第2楼xcself于2007-10-17 21:45发表的  :
其实是56 36    57 49

为什么是这样?
我不懂x=y+++x++
顶端 Posted: 2007-10-17 21:48 | [3 楼]
johnlynn



性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 83
威望: 0
浮云: 1156
在线等级:
注册时间: 2006-12-26
最后登陆: 2010-09-25

5come5帮你背单词 [ defect /di'fekt/ n. 缺陷,缺点,缺乏 ]


LS不对吧...+的优先级要比++低些吧!
可以这样理解吧...后置自增运算符对变量的增1或减1是在该指令的最后来执行的...
也就是说, x=y++ + x++; 的执行顺序是x=20+35;x++;y++;此时x=56;y=36;
  y= ++y + ++x; 执行顺序为:x=57,y=37;y=94;
就理解了.按常规方法分析即可.
顶端 Posted: 2007-10-17 21:51 | [4 楼]
jason421





性别: 帅哥 状态: 该用户目前不在线
等级: 不日成名
发贴: 869
威望: 0
浮云: 225
在线等级:
注册时间: 2006-11-24
最后登陆: 2008-06-29

5come5帮你背单词 [ halt /ho:lt/ n. & v. 停住,停止 ]


x=56以后在执行++所以x=57

under不??
顶端 Posted: 2007-10-17 21:52 | [5 楼]
南方佳木



性别: 帅哥 状态: 该用户目前不在线
头衔: 要走了
等级: 人见人爱
家族: KOP★红军魂
发贴: 2258
威望: 0
浮云: 1106
在线等级:
注册时间: 2006-01-17
最后登陆: 2014-08-01

5come5帮你背单词 [ sun /sΛn/ n. 太阳,日 ]


Quote:
引用第3楼ljpdxj于2007-10-17 21:48发表的  :

为什么是这样?
我不懂x=y+++x++

++优先级大于+的嘛
在变量后面先运算再加在前面的先加再运算
顶端 Posted: 2007-10-17 21:53 | [6 楼]
ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ minimum /'miniməm/ n. 最小量,最低限度 ]


楼上两位蝈蝈分析的有道理!
顶端 Posted: 2007-10-17 21:57 | [7 楼]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ discard /dis'ka:d/ vt. 放弃,抛弃,解雇 ]


嗯,好像大家说的都是对的~
顶端 Posted: 2007-10-17 22:06 | [8 楼]
luwen



性别: 帅哥 状态: 该用户目前不在线
头衔: 无我相
等级: 人见人爱
发贴: 4372
威望: 0
浮云: 1120
在线等级:
注册时间: 2006-09-14
最后登陆: 2013-09-25

5come5帮你背单词 [ thankful /'θæŋkful/ a. 感谢的,感激的 ]


Quote:
引用第4楼johnlynn于2007-10-17 21:51发表的  :
LS不对吧...+的优先级要比++低些吧!
可以这样理解吧...后置自增运算符对变量的增1或减1是在该指令的最后来执行的...
也就是说, x=y++ + x++; 的执行顺序是x=20+35;x++;y++;此时x=56;y=36;
  y= ++y + ++x; 执行顺序为:x=57,y=37;y=94;
就理解了.按常规方法分析即可.

够详细的了
顶端 Posted: 2007-10-17 22:37 | [9 楼]
路客与刀客



性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
家族: 梦魇图腾
发贴: 1980
威望: 0
浮云: 1186
在线等级:
注册时间: 2007-01-02
最后登陆: 2008-06-29

5come5帮你背单词 [ illustration /iləs'treiən/ n. 说明,阐明,例证,插图 ]


这种语句书写本身就不规范像“x=y++ + x++; ”这样的语句为什么不写成“x=(y++ )+( x++); ”呢?这样就不会有任何问题了。不过如果楼主像测试++variable和variable++的话,也不应该这样测试的。而一般的做法是如下
Quote:

int variable=10;
int a=++variable;
int b=variable++;
std::cout<<a<<std::endl;
std::cout<<b<<std::endl;

总之代码应该尽量的书写规范,为别人阅读你的代码,也为了自己好调试。
顶端 Posted: 2007-10-17 22:49 | [10 楼]
ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ disciple /di'saipl/ n. 门徒,信徒 ]


Quote:
引用第10楼路客与刀客于2007-10-17 22:49发表的  :
这种语句书写本身就不规范像“x=y++ + x++; ”这样的语句为什么不写成“x=(y++ )+( x++); ”呢?这样就不会有任何问题了。不过如果楼主像测试++variable和variable++的话,也不应该这样测试的。而一般的做法是如下

总之代码应该尽量的书写规范,为别人阅读你的代码,也为了自己好调试。

谢谢楼上这位蝈蝈建议!
这道题目是我在网上看到的一道面试题目!
开始就是搞不明白结果为什么是这样!
顶端 Posted: 2007-10-17 23:33 | [11 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ waist /weist/ n. 腰部,腰 ]


Quote:
引用第10楼路客与刀客于2007-10-17 22:49发表的  :
这种语句书写本身就不规范像“x=y++ + x++; ”这样的语句为什么不写成“x=(y++ )+( x++); ”呢?这样就不会有任何问题了。不过如果楼主像测试++variable和variable++的话,也不应该这样测试的。而一般的做法是如下

总之代码应该尽量的书写规范,为别人阅读你的代码,也为了自己好调试。

这位GG说得有道理哈
BS那种叫你认优先级或者是 i = (i++) + (++i)这种题
顶端 Posted: 2007-10-18 07:15 | [12 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.012413(s) query 5, Time now is:06-04 00:34, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号