为了账号安全,请及时绑定邮箱和手机立即绑定

61、请读程序: main() { int a=1,b=2; printf("%d\n",a=a+1,a+6,b+2);} 则上面程序的输出结果是____

61、请读程序: main() { int a=1,b=2; printf("%d\n",a=a+1,a+6,b+2);} 则上面程序的输出结果是____

C
包小龙虾 2018-08-20 21:28:58
 61、请读程序: main() { int a=1,b=2; printf("%d\n",a=a+1,a+6,b+2);} 则上面程序的输出结果是____  A、2 B、3 C、4 D、1
查看完整描述

7 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

这里不是逗号表达式。原答案没错,是 2

查看完整回答
反对 回复 2018-08-20
  • 包小龙虾
    包小龙虾
    那这样的话就是按平常的输出执行啦?执行时按b+2,a+6,a=a+1依次执行,输出仅有一个%d,因此输出时输出第一个值吗
  • onemoo
    onemoo
    关于这个两个疑问,我又回复了一帖。
?
pop小乐乐

TA贡献2条经验 获得超1个赞

这里只会输出一个int型的字符,看第一个逗号后面的表达式:a=a+1 这里是从右往左赋值,也就是a =2 然后输出2

查看完整回答
1 反对 回复 2018-08-21
?
从来只爱真白

TA贡献4条经验 获得超3个赞

这是?

查看完整回答
反对 回复 2018-08-21
?
从来只爱真白

TA贡献4条经验 获得超3个赞

这是什么?

查看完整回答
反对 回复 2018-08-21
?
onemoo

TA贡献883条经验 获得超454个赞

执行时按b+2,a+6,a=a+1依次执行

准确地说不是“依序执行”。

实际上 C 标准没有规定调用函数时的各个参数哪个会先求值,所以传实参时要注意各个参数求值不能互相影响。我说的“互相影响”就是指比如有的参数有副作用(自增之类),而副作用刚好会影响别的参数,类似 (..., a++, a, ...) 这样的传参就是有问题的。

当然题目中的各个参数互不影响,所以这一点上没有问题。


输出仅有一个%d,因此输出时输出第一个值吗

printf 这样的函数最好在调用时传入对应个数的参数,不要多传或少传。不正确的参数个数在编译时,编译器肯定会给出警告的,但不一定会报错。

一般来说,多传入参数不会引起显著的错误。但是少传入参数一定会引起问题。总之实际运用时一定要注意参数个数。

查看完整回答
反对 回复 2018-08-21
?
小鱼0319zn

TA贡献5条经验 获得超2个赞

bucuo

查看完整回答
反对 回复 2018-08-21
?
小鱼0319zn

TA贡献5条经验 获得超2个赞

bucuo

查看完整回答
反对 回复 2018-08-21
?
慕尼黑12138666

TA贡献1条经验 获得超0个赞

这好像是我高中数学题

查看完整回答
反对 回复 2018-08-20
?
xYS1717

TA贡献6条经验 获得超1个赞

我猜是2

查看完整回答
反对 回复 2018-08-20
?
hhsj168

TA贡献1条经验 获得超0个赞

c吧,逗号表达式的结果

查看完整回答
反对 回复 2018-08-21
  • 7 回答
  • 0 关注
  • 3791 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信