int i=3,;s=++i*--i; 为什么等于9
答案:6 悬赏:40 手机版
解决时间 2021-03-06 23:38
- 提问者网友:练爱
- 2021-03-06 04:31
int i=3,;s=++i*--i; 为什么等于9
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-03-06 04:43
int i=3;
i=i+1;
i=i-1;
s=i*i;
i=i+1;
i=i-1;
s=i*i;
全部回答
- 1楼网友:鱼忧
- 2021-03-06 06:00
++i=4;
--i=3;
3*3=9
--i=3;
3*3=9
- 2楼网友:鱼芗
- 2021-03-06 05:38
第二步是错的,我忘了符号的优先级。还有你定义的时候一定要注意 < > =的结果是完全不同的.
- 3楼网友:独钓一江月
- 2021-03-06 05:30
++ --优先级大于 *
*的运算是右到左
所以--i再++i 所以i还是3 3*3=9
*的运算是右到左
所以--i再++i 所以i还是3 3*3=9
- 4楼网友:duile
- 2021-03-06 05:07
s=++i*--i;关键是理解运算的优先级和运算方向
这个式子先进行++i后i=4,在进行--i;i=3,之后再是运算*即有:s=3*3=9,这里++i是自加就会运用此值
你可以运行一下cout<举一反三:s=++i*i--;值是s=4*4=16,这里i--是自减后下一次运用i
s=i++*i--;是多少呢?这里是s=3*3=9;
- 5楼网友:洒脱疯子
- 2021-03-06 04:59
这关乎于副作用,不同的编译器结果可能完全不同:
①在支持纯C的编译器中 一般是8,因为变量是“即时生效”的。
++i 被替换为4,--i被替换为2 ,都是以原来的i=3 作为备份分别求值。
②在C++最新编译器,一般是9:
int i=3;
s=++i*--i;
等效于
++i;
--i;
s=i*i;
③如果考试要考,你就要清楚考试是以什么编译器为准,才好针对性的准备。
①在支持纯C的编译器中 一般是8,因为变量是“即时生效”的。
++i 被替换为4,--i被替换为2 ,都是以原来的i=3 作为备份分别求值。
②在C++最新编译器,一般是9:
int i=3;
s=++i*--i;
等效于
++i;
--i;
s=i*i;
③如果考试要考,你就要清楚考试是以什么编译器为准,才好针对性的准备。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯