永发信息网

C++语言中a=3,c=++a,那a为什么会变成4?

答案:6  悬赏:40  手机版
解决时间 2021-02-10 05:27
a=3;b=5;c=++a*b;d=a++*b;
教程中给出的结果是 a=4,c=20,d=20
这是为什么?麻烦详细说明,本人无师 ,谢谢!
系统内目前没分 ... 抱歉!
最佳答案
在这个问题中,你首先要明白,++的优先级高于*与=的优先级,其次要知道前缀自增与后缀自增的区别(前自增,即++a是先增后操作,后自增,即a++反之)。明白了上述两个条件就可以分析你的问题了:
c=++a*b;//a先自增,此时为4,然后与b相乘,得到的值20赋值给c。c即为20
d=a++*b;//a(此时值为4)先与b相乘,得值20赋值给d,d的值为20.然后a自增,此时a变成5
经过以上分析,我在自己的编译器上测试后得到结果:a=5,b=5,c=20,d=20;
那么教材始终是教材,出错是难免的了,恭喜你在学到知识的同时也发现了真知,呵呵
全部回答
++这个运算符就是自增1啊,,, a++是先作用于表达式.再自增. ++a是先自增 再作用于表达式.
c=++a*b,由于++运算在a前面,所以这句等价于下面两句:a=a+1;c=a*b;所以此时a=4,c=20;d=a++^b;由于++在a的后面所以等价于下面两个语句:d=a*b;a=a+1;所以d=20,a=5(之前a已经等于4了)如果教材中是4的话,应该是教材上写错了。你要是不相信可以运行下试试。还有就是你标题中提出的问题,这个我觉得是楼主没有对++运算符掌握好,再看看++运算的例子。
参考书上给错了啊 a的值是5 ++a和a++的区别是++a是a+1后,得到的数值进行运算,a++是a当前的数值参与运算然后加1,不管怎么样a都是要+1的。所以a=5.
c=++a是把a的值自加1再赋给c c=++a*b 把a的值自加1再和b相乘 c=20 a=4 d=a++*b; 是把a的值自加1再和b相乘 d=20 a=5 我运行的结果是a=5,b=5,c=20,d=20 可能是教程出错把
教程中的答案似乎有错,以上运算可以理解为: a = 3; b = 5; ++a; //a = 4 c = a * b; // 20 = 4 * 5 d = a * b; //20 = 4 * 5 a++; //a = 5 因此,a最后应该等于5. ========================================================= int a[5][3]; char b[5][10]; int i,j,t,k; char c[10]; 出现“很怪”的数字的原因是在j=4时,j 1就越界了,所以得到奇怪的数值 这个问题问的不清楚,暂时不回答。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
潇湘培训学校地址在什么地方,想过去办事
通过汽车金融公司贷款买车,金融公司是将贷款
价板地我想知道这个在什么地方
电脑维修的故事:如何把电脑维修生意做的更好
腰上动手术我能多长时间恢复好能下床出门
金牛国际里面什么最好玩的?
Y623/G231(路口)这个地址在什么地方,我要处
鼎泰茶庄怎么去啊,我要去那办事
小米4怎么一建换机红米note4
韩剧tv这个网站它是怎么赚钱的它里面的韩剧都
前任QQ空间还留着我的照片和我们的聊天记录截
青松食品地址有知道的么?有点事想过去
世冠食府在哪里啊,我有事要去这个地方
芙蓉干洗店地址在什么地方,我要处理点事!
80平米家用空调到底是挂失的好还是立式的好?
推荐资讯
解签:签文中的疾病设送是什么意思?
罪恶王冠中喋祈(我真的打不出来,原谅我吧)
下列哪一种生物不是由细胞构成的DA. 向阳葵B.
点P在以F1.F2为焦点的双曲线E:x2a2-y2b2=1上.
手机自动关机然后又自动重启是什么原因
以下哪类多层建筑可使用经阻燃处理的化纤织物
学的高铁乘务能面试空中乘务嘛
中国邮政储蓄银行(加斗邮政所)地址有知道的么
普洱湄公河旅游有限公司这个地址在什么地方,
韩国统营与韩国釜山哪里更好?
满意出租我想知道这个在什么地方
正勤网吧李松蓢店我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?