首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
a=3*5 , a*4; 最终a为60.是否正确?
[单选题]
a=3*5 , a*4; 最终a为60.是否正确?
正确
错误
查看答案及解析
添加笔记
求解答(2)
邀请回答
收藏(369)
分享
13个回答
添加回答
121
牛客3380542号
逗号表达式,依次计算,整体的值为最后结果,先计算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)
7
Andrew9646
先说结论,这种没有指定编程语言的,首先判错;仔细看了注释,风格应该是C语言;
于是IDE跑一跑代码,不能运行;
就算逻辑正确,代码跑不出来,有什么意义?
二级结论,抛弃或者屏蔽这种无意义的题
2023年6月18日11:00:28更新
我为之前的无知,道歉,仔细看了一下评论区的其他回复,发现无法错误的原因是没有初始化变量a,初始化之后就可以运用逗号运算符的知识了。但是菜鸟教程写得似乎有点前后矛盾。
但据我观察,也可以说得通,比如说,操作多个局部变量,会按照顺序一次赋值,并且在局部作用域可以打印;这其实就是常用的循环场景,操作多个指针就行。
第二种则是对变量重复赋值,比如题目中这样,但对同一个变量的多次赋值,以逗号运算符中最后一个表达式为准,其他表达式均不参与运算。
Clion编辑的结果
在python中编辑的结果
编辑于 2023-06-18 11:25:28
回复(2)
4
辉小歌
a*4又没有赋值,故结果为15
发表于 2021-11-29 23:01:04
回复(0)
2
JC201901021328459
赞同楼上的观点,这种代码根本跑不起来。
发表于 2021-10-27 20:15:50
回复(0)
2
浩瀚星辰.
好像是a*4没有赋值,寄存器从内存取值后,没有返回给内存,不知道这样解释对不对
发表于 2021-09-14 19:43:54
回复(0)
1
机会留着有准备的人
逗号表达式
发表于 2023-10-21 17:28:20
回复(0)
1
風客
<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)
0
手持绿沉枪似铁
第二个表达式没有赋值
发表于 2025-03-25 11:54:06
回复(0)
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)
0
丶落萩枫
如果最后是 a *= 4那就对了,是不是
发表于 2017-07-31 21:02:58
回复(1)
0
xiaoL
最后为什么不赋值呢?
发表于 2017-07-27 08:37:25
回复(1)
0
Onedayyy
发表于 2017-06-02 15:07:39
回复(0)
0
用户名无法显示
赋值号右边是逗号表达式,因为赋值号的优先级很低,所以先计算右侧逗号表达式的值。效果近似于a=a*4
发表于 2017-05-17 00:37:36
回复(2)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C语言
C++
上传者:
zsw3
难度:
13条回答
369收藏
1360浏览
热门推荐
相关试题
class A; class B;...
360集团
C++
C语言
评论
(18)
来自
360公司2014校招笔试卷
假定指针变量 p 定义为 “int...
360集团
C++
C语言
评论
(37)
来自
360公司2014校招笔试卷
运行 ldd hello 可以得到...
百度
C++
评论
(3)
平方根
过关题目
语言题
评论
(1)
请回答问题
图形推理
评论
(2)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题