永发信息网

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

答案:6  悬赏:40  手机版
解决时间 2021-02-10 05:27
  • 提问者网友:缘字诀
  • 2021-02-09 23:53
a=3;b=5;c=++a*b;d=a++*b;
教程中给出的结果是 a=4,c=20,d=20
这是为什么?麻烦详细说明,本人无师 ,谢谢!
系统内目前没分 ... 抱歉!
最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-02-10 00:29
在这个问题中,你首先要明白,++的优先级高于*与=的优先级,其次要知道前缀自增与后缀自增的区别(前自增,即++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楼网友:不如潦草
  • 2021-02-10 05:47
++这个运算符就是自增1啊,,, a++是先作用于表达式.再自增. ++a是先自增 再作用于表达式.
  • 2楼网友:过活
  • 2021-02-10 05:08
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的话,应该是教材上写错了。你要是不相信可以运行下试试。还有就是你标题中提出的问题,这个我觉得是楼主没有对++运算符掌握好,再看看++运算的例子。
  • 3楼网友:逐風
  • 2021-02-10 03:41
参考书上给错了啊 a的值是5 ++a和a++的区别是++a是a+1后,得到的数值进行运算,a++是a当前的数值参与运算然后加1,不管怎么样a都是要+1的。所以a=5.
  • 4楼网友:末日狂欢
  • 2021-02-10 02:24
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 可能是教程出错把
  • 5楼网友:人间朝暮
  • 2021-02-10 00:55
教程中的答案似乎有错,以上运算可以理解为: 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就越界了,所以得到奇怪的数值 这个问题问的不清楚,暂时不回答。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯