首页 > 试题广场 >

a=3*5 , a*4; 最终a为60.是否正确?

[单选题]

a=3*5 , a*4; 最终a为60.是否正确?

  • 正确
  • 错误
逗号表达式,依次计算,整体的值为最后结果,先计算a=3*5,所以a的值是15,再计算a*4,由于没有再进行赋值运算,所以a的值还是15,不过整体表达式的值是60。你可以这样测试 b=(a=3*5,a*4);你会发现输出的a是15,b是60
发表于 2017-08-12 18:25:53 回复(2)
先说结论,这种没有指定编程语言的,首先判错;仔细看了注释,风格应该是C语言;
于是IDE跑一跑代码,不能运行;
就算逻辑正确,代码跑不出来,有什么意义?
二级结论,抛弃或者屏蔽这种无意义的题

2023年6月18日11:00:28更新

我为之前的无知,道歉,仔细看了一下评论区的其他回复,发现无法错误的原因是没有初始化变量a,初始化之后就可以运用逗号运算符的知识了。但是菜鸟教程写得似乎有点前后矛盾。

但据我观察,也可以说得通,比如说,操作多个局部变量,会按照顺序一次赋值,并且在局部作用域可以打印;这其实就是常用的循环场景,操作多个指针就行。

第二种则是对变量重复赋值,比如题目中这样,但对同一个变量的多次赋值,以逗号运算符中最后一个表达式为准,其他表达式均不参与运算。

Clion编辑的结果

在python中编辑的结果

编辑于 2023-06-18 11:25:28 回复(2)
a*4又没有赋值,故结果为15
发表于 2021-11-29 23:01:04 回复(0)
赞同楼上的观点,这种代码根本跑不起来。

发表于 2021-10-27 20:15:50 回复(0)
好像是a*4没有赋值,寄存器从内存取值后,没有返回给内存,不知道这样解释对不对
发表于 2021-09-14 19:43:54 回复(0)
逗号表达式
发表于 2023-10-21 17:28:20 回复(0)
<p>a=3*5,a=4—》a=15</p><p>b=(a=3*5,a=4)—》b=60</p>
发表于 2020-10-21 18:16:36 回复(0)
第二个表达式没有赋值
发表于 2025-03-25 11:54:06 回复(0)
逗号运算符的优先级是最低的,赋值运算符的优先级高于逗号运算符。
题目没有将逗号运算用圆括号括起,所以先执行a=3*5,尔后执行int a*4,语法错误无法编译成功。
假设将3*5和a*4括起,优先计算3*5,然后计算a*4,根据逗号运算符运算规则取4*a的慎作为整个逗号运算的值,即int a=a*4;
用 gcc 9.4.0编译    int a = a*4;    输出的结果为a = 0;

发表于 2022-10-06 16:08:21 回复(0)
如果最后是 a *= 4那就对了,是不是
发表于 2017-07-31 21:02:58 回复(1)
最后为什么不赋值呢?
发表于 2017-07-27 08:37:25 回复(1)
发表于 2017-06-02 15:07:39 回复(0)
赋值号右边是逗号表达式,因为赋值号的优先级很低,所以先计算右侧逗号表达式的值。效果近似于a=a*4
发表于 2017-05-17 00:37:36 回复(2)