首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
如果i=5;那么a=
[单选题]
如果i=5;那么a=(++i)--;之后,a和i的值各是多少?
a=6.i=6
a=5.i=6
a=6.i=5
a=5.i=5
查看正确选项
添加笔记
求解答(0)
邀请回答
收藏(252)
分享
9个回答
添加回答
14
明日边缘
这道题不该关联到C题库里。
C++中:答案C,++i自增后返回自身(左值),接着i--自减并返回减前的旧值(右值),所以a是6,i最终一加一减值不变。但C语言里,++i 和 i++都是右值,编译不过的。
发表于 2021-03-11 00:04:31
回复(1)
6
FunkyAnsi
<p>关系运算符优先级大于赋值所以先算括号内的i自增1,接着赋值优先于自减,因而先赋值a后,i再自减1</p>
发表于 2020-09-23 12:49:26
回复(0)
6
青山崖野
先自增,再赋值,在自减。
赋值运算符的优先级最低。
发表于 2017-04-18 22:07:53
回复(6)
4
萝卜坑~~~
我理解的是 () 和 后置自减运算符优先级为1级,所以先算(++i),此时 i=6,接着算 i--,i 的值为5,但是要下一次才生效,所以 a = 6,i = 5,赋值运算符的优先级为14
发表于 2019-08-31 09:36:59
回复(0)
4
辉火
选C
(++i)的值为6,i的值变为6
(++i)--的值为6(先幅值再减1),i的值变为5
发表于 2016-12-21 15:45:52
回复(0)
3
知人不评人
先排一下优先级,分别是后置递减>前置递增>赋值,由于加了括号,所以++i首先执行,之后,i=6,++i返回的结果是i这个对象,再对它执行i--,它会把对象i的值-1,所以此时i=5,但是返回的是没减之前的对象的值的副本,也就是6,所以选C。
发表于 2021-10-23 13:02:39
回复(0)
3
黄巍1号
++i先在局部变量表中完成自加,即i=6,然后取到操作数栈,栈中i=6;
i--先将i值取到操作数栈,即操作数栈中数为i=6,然后在局部变量表中完成自减,i=5
最后进行赋值操作,将操作数栈中的i=6赋给局部变量表中的a,所以a=6,i=5
发表于 2021-03-18 23:00:40
回复(0)
1
O.J.
这道题出错了 (++i)--的第一步计算(++i)的结果是一个左值
发表于 2021-03-22 11:41:46
回复(0)
0
Recyclable
****,看反了
发表于 2021-01-31 20:05:25
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++工程师
2017
测试工程师
C++
滴滴
Java工程师
上传者:
小小
难度:
9条回答
252收藏
748浏览
热门推荐
相关试题
运行 ldd hello 可以得到...
百度
C++
评论
(3)
属于组合逻辑电路是()。
数字电路
评论
(1)
有同事不完成任务,影响力进度,你怎...
业务综合
评论
(1)
如果通过这次面试我们单位录用了你,...
岗位认知
自我认知
评论
(1)
请你说说Java的特点和优点,为什...
Java
评论
(268)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题