永发信息网

C语言问题,若x=3.y=(++x)+(++x)+(++x),则y为多少

答案:6  悬赏:20  手机版
解决时间 2021-01-14 06:00
  • 提问者网友:我是女神我骄傲
  • 2021-01-13 15:38
C语言问题,若x=3.y=(++x)+(++x)+(++x),则y为多少
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-01-13 16:07
参看汇编得
将x的值放一个地址a里
执行 a = a + 1 即第一个++x
a的值给x(此时x为4)
再将x的值放一个地址b里
执行 b = b + 1 即第二个++x
将b的值给x(此时x为5)
执行x放到y里(此时y变成5)
再执行 y = y + x(即第一个+)(y变成10)
再将x的值放一个地址c里
执行 c = c + 1 即第三个++x
将c的值给x(此时x为6)
再执行y = y + x(即第二个+)(y变成16)
全部回答
  • 1楼网友:街头电车
  • 2021-01-13 22:12
15
y = 4+5+6;追问那请问如果有三个+可以进行运算么之前我算的是16,不知道是哪里出错了
  • 2楼网友:不想翻身的咸鱼
  • 2021-01-13 21:57
先++,变成4+5+6追问是这么算,可是为什么我在电脑上是16,而且有的人顺也是16啊
  • 3楼网友:纵马山川剑自提
  • 2021-01-13 20:20
y=(++x)+(++x)+(++x)
=16追问请问怎么算的,不应该是15么追答y=(++x)+(++x)=5+5
y=(++x)+(++x)+(++x)=4+6+6
y=(++x)+(++x)+(++x)+(++x)=4+5+7+7
(++x)+(++x)因为结束了是自加了以后再算
  • 4楼网友:摆渡翁
  • 2021-01-13 18:56
对于机器内部加法器来说,只能让2个数相加,所以(++x)+(++x)+(++x)可以分解为(++x)分割+(++x)+(++x);对于前半部分来说很好理解,就是4.后面2个应该是加完之后再算,也就是6+6=12,所以答案就是16;同样可以分成(++x)+(++x)分割+(++x),即5+5+6=16。注意:只有最后2个数或者最前面两个数才是加完再算,不信你可以试试,结果是一样的。我用JAVA代码试过了,答案是15,不过我对JAVA不是很了解,可能是处理算式的方式不同,所以答案不同,不过对于C语言来说标准答案就是16。望采纳。个人见解,不喜勿喷。
  • 5楼网友:妄饮晩冬酒
  • 2021-01-13 17:22
答案明明是18,怎么这么五花八门的,,括号优先级最高所以先进行括号运算,所以第一个括号之后x=x+1=4,第二个x=x+1=5,第三个x=x+1=6。再进行外部运算,6+6+6=18。。你可以用程序验证,因为这里都是x所以都会进行运算改变。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯