永发信息网

printf()函数和逗号表达式子的问题

答案:4  悬赏:0  手机版
解决时间 2021-04-03 12:09
谁解释下printf("%d\t%d\n",(a=3*a,3*a))的结果为什么是9

忘了说啊,前面定义的
int a=1;
最佳答案
你这个我没看明白,不过我知道逗号表达式是意思先处理逗号前面的表达式,再处理逗号后面的表达式,如果你的a最开始是1的话,你这个就是先用3*a得3,将3赋给a,再用3*a得到9,最后只输出的逗号后面的3*a的结果,也就是9。我觉得你这个程序有问题,因为你有俩占位符,确只给一个占位符赋值了,应该吧里面那个括号去掉…
全部回答
你忽略了一点——括号运算符。加了括号就是一个整体,所以printf("%d\n",(a=3*5,a*4,a+5));这种写法表示给printf传递了两个参数,其中第二个参数是(a=3*5,a*4,a+5)逗号表达式的值。 printf("%d\n",a=3*5,a*4,a+5);这种写法是给printf这个函数传递了4个参数,而不是你想的逗号表达式。
逗号表达式从左向右计算,且逗号表达式运算级别最低,先算3*a得3,将3赋值给a,然后再算后面的3*a得9,逗号表达的值便是最后面得到的9.
你的a的初始值是3吧, 赋值运算的优先级最低 (a=3*a,3*a) 等价于 a=(3*a,3*a) 后面是一个逗号表达式,它的值就是最后一个表达式的值,是9
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
Seceral years ago a young teacher took a b
很忍心相爱过 歌曲
在距凸透镜20cm处放一点燃的蜡烛,在另一侧距
12v45ah电瓶配多大的充电器充最合适啊
没籽的葡萄是打了避孕药是么
传奇召唤师蛮夷阵营哪些英雄好 蛮夷阵营英雄
双色球11十1中三等奖能中多少钱
冒险岛金字塔任务怎么捕捉迷你白雪人法老
上海街道的名称为什么很多都是其他地方的地名
大学学籍档案能改吗
魔物猎人的简介
当一个没有骨气的男人爱上一个脾气很大的女人
4s店内能检测车内异味吗
AD电路图中标称值写5R1啊是什么意思
卓学堂和学而思谁好
推荐资讯
想不通一点,在外边我几乎谁也不爱搭理 有事
我在画材店订做了5mm黑色亚克力画框,他们用
男朋友这样是不在乎我,还是相信我呢
美甲多长时间换一换
《后来的我们》王子面txt全集下载
我的电脑玩英雄联盟页面暗黄?
鼠猴虎蛇中大奖是什么肖
顺字结尾的成语有哪些
Hardly the door when he rushed into the of
橘核.苏叶.苏子.桔梗.陈皮.青蒿.毛根.玉石膏.
把钱以 存款折的形势提出来,再存到另一个人的
kAl(SO4)2·12H2O与H2O反应的方程式及现象
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?