在c语言中y=(++a)+(++a)+(++a),那么y的值是多少呢?

 我来答
谷梁贤老寅
2019-07-17 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:1955万
展开全部
受不了了,怎么那么多人答15,虽然这个问题很没意义,但别误导人家。
15不是不对,但15只是一个编译器的实现结果,个个编译器的实现不同,此题的结果是与编译器相关的
所以标准答案,是没有标准答案
按照标准,在一个表达式内对同一变量多次++,结果是不确定的,完全是各个编译器自己说了算,我记得TC,BC,gcc和VC的答案有的就不一样
所以以上各楼的答案可以说都对,又都不对
另,楼上的人别说“绝对,我的老师说的”之类。老师犯错多了,我们大学老师上课错误我能听出一箩筐,呵呵。这类问题虽然很无聊,但还是参阅一下标准再回答比较好,毕竟道听途说来的答案会误导人的。
参考引用地址的最后一条
郑振英衣念
2019-09-02 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:35%
帮助的人:1007万
展开全部
编译器不同,可能会出现不同的结果。

MS
VC++

linux
cc,
linux
gcc

15.00
程序中最好不要用二义性或多义性的语句形式,编译器不同,可能会出现不同的结果,给自己带来麻烦。

y=(++a)+(++a)+(++a)
拆开来,写明确了多好:
a
=
3;
a
=
a
+
1;
y
=
a
+
a
+
a;
-----------------
或:
a
=
3;
b
=
a
+
1;
c
=
b
+
1;
d
=
c
+
1;
y
=
b
+
c
+
d;
语句是为人服务的,程序员要做语句的主人。
书是人写的,书上错的东西有的是。书为我而用,取其精华,去其糟粕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
麦树枝冯庚
2019-10-19 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:987万
展开全部
首先明确执行顺序,有括号的先执行括号中语句,由于问题中的语句有三个括号,则应该自左向右的顺序执行。
++a的意思是在使用a之前把a加1。
现在假设a的初始值为A,根据之前所说的执行顺序,先执行左边第一个括号,结果为A+1,再相继执行后面两个括号,注意到a的值已经在上一次运算中发生变化,所以后面两个括号的结果分别为A+2和A+3,最后将三个括号结果相加,y=3A+6,把A=3代入,结果为15.
但是这只是按照标准C的规则得到的答案,不同的编译器有不同的解释方法,所以实际上可能得到不同的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式