永发信息网

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

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

忘了说啊,前面定义的
int a=1;
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-04-03 05:21
你这个我没看明白,不过我知道逗号表达式是意思先处理逗号前面的表达式,再处理逗号后面的表达式,如果你的a最开始是1的话,你这个就是先用3*a得3,将3赋给a,再用3*a得到9,最后只输出的逗号后面的3*a的结果,也就是9。我觉得你这个程序有问题,因为你有俩占位符,确只给一个占位符赋值了,应该吧里面那个括号去掉…
全部回答
  • 1楼网友:轻雾山林
  • 2021-04-03 07:36
你忽略了一点——括号运算符。加了括号就是一个整体,所以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个参数,而不是你想的逗号表达式。
  • 2楼网友:持酒劝斜阳
  • 2021-04-03 07:04
逗号表达式从左向右计算,且逗号表达式运算级别最低,先算3*a得3,将3赋值给a,然后再算后面的3*a得9,逗号表达的值便是最后面得到的9.
  • 3楼网友:何以畏孤独
  • 2021-04-03 06:37
你的a的初始值是3吧, 赋值运算的优先级最低 (a=3*a,3*a) 等价于 a=(3*a,3*a) 后面是一个逗号表达式,它的值就是最后一个表达式的值,是9
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯