在c语言中y=(++a)+(++a)+(++a),那么y的值是多少呢?
展开全部
受不了了,怎么那么多人答15,虽然这个问题很没意义,但别误导人家。
15不是不对,但15只是一个编译器的实现结果,个个编译器的实现不同,此题的结果是与编译器相关的
所以标准答案,是没有标准答案
按照标准,在一个表达式内对同一变量多次++,结果是不确定的,完全是各个编译器自己说了算,我记得TC,BC,gcc和VC的答案有的就不一样
所以以上各楼的答案可以说都对,又都不对
另,楼上的人别说“绝对,我的老师说的”之类。老师犯错多了,我们大学老师上课错误我能听出一箩筐,呵呵。这类问题虽然很无聊,但还是参阅一下标准再回答比较好,毕竟道听途说来的答案会误导人的。
参考引用地址的最后一条
15不是不对,但15只是一个编译器的实现结果,个个编译器的实现不同,此题的结果是与编译器相关的
所以标准答案,是没有标准答案
按照标准,在一个表达式内对同一变量多次++,结果是不确定的,完全是各个编译器自己说了算,我记得TC,BC,gcc和VC的答案有的就不一样
所以以上各楼的答案可以说都对,又都不对
另,楼上的人别说“绝对,我的老师说的”之类。老师犯错多了,我们大学老师上课错误我能听出一箩筐,呵呵。这类问题虽然很无聊,但还是参阅一下标准再回答比较好,毕竟道听途说来的答案会误导人的。
参考引用地址的最后一条
展开全部
编译器不同,可能会出现不同的结果。
用
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;
语句是为人服务的,程序员要做语句的主人。
书是人写的,书上错的东西有的是。书为我而用,取其精华,去其糟粕。
用
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;
语句是为人服务的,程序员要做语句的主人。
书是人写的,书上错的东西有的是。书为我而用,取其精华,去其糟粕。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先明确执行顺序,有括号的先执行括号中语句,由于问题中的语句有三个括号,则应该自左向右的顺序执行。
++a的意思是在使用a之前把a加1。
现在假设a的初始值为A,根据之前所说的执行顺序,先执行左边第一个括号,结果为A+1,再相继执行后面两个括号,注意到a的值已经在上一次运算中发生变化,所以后面两个括号的结果分别为A+2和A+3,最后将三个括号结果相加,y=3A+6,把A=3代入,结果为15.
但是这只是按照标准C的规则得到的答案,不同的编译器有不同的解释方法,所以实际上可能得到不同的结果。
++a的意思是在使用a之前把a加1。
现在假设a的初始值为A,根据之前所说的执行顺序,先执行左边第一个括号,结果为A+1,再相继执行后面两个括号,注意到a的值已经在上一次运算中发生变化,所以后面两个括号的结果分别为A+2和A+3,最后将三个括号结果相加,y=3A+6,把A=3代入,结果为15.
但是这只是按照标准C的规则得到的答案,不同的编译器有不同的解释方法,所以实际上可能得到不同的结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询