鱼C论坛

 找回密码
 立即注册
查看: 2598|回复: 12

c的运算符,跪求详解,内容如下,有偿采纳

[复制链接]
发表于 2020-6-1 04:42:35 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大佬们,求助啊,我真的想不懂这个从右向左算为什么倒数第二个的值是-8,还有那个—i++是怎么运算的啊,跪求大佬给一个详细步骤,详细解答下每一步输出什么此时i的值是什么。
Screenshot_20200601_043734.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-1 06:27:58 | 显示全部楼层
你知道也没什么用的。谁会这么写代码呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-1 07:33:33 From FishC Mobile | 显示全部楼层
不是,考试要考。不然我也不会看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 07:51:41 | 显示全部楼层
这和运算符优先级有关,自增/减在左边先将值改变再使用;在右侧则先用一次本来的值,用完再递增;
对于上述printf结果从左至右依次按照规定写即可知;
由于C/C++的参数是从右到左压入栈(也可能直接使用寄存器传参),故按照FILO读取顺序从左至右。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-1 08:12:54 From FishC Mobile | 显示全部楼层
CodingCat_k 发表于 2020-6-1 07:51
这和运算符优先级有关,自增/减在左边先将值改变再使用;在右侧则先用一次本来的值,用完再递增;
对于上 ...

嗯嗯,但是我倒数第二个就和课本答案不一样,我算出来的负七,课本是负八,大佬能帮我看下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 08:31:26 | 显示全部楼层
前面的9--运算完了得8,再给到倒数第二个时就-8了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 16:05:15 | 显示全部楼层
掌芝士 发表于 2020-6-1 07:33
不是,考试要考。不然我也不会看


这么说呢,我认为如果出卷老师这么出,他应该要给出几个标准答案
因为,出现多个答案的原因在于不同的编译器的结果不一样,再通俗点,就是编译器的运算规则导致了结果不一样
你想知道你现在给出的例子的答案,我建议你手动写下代码,然后在直接选择查看汇编代码
如果你想看比较详细的解释,建议从我这儿点击我回答的一些最佳答案里面早期回复,我曾经多次回复,相信会给你启发的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 16:41:52 | 显示全部楼层
其实我遇到这个时也是一头雾水。后来我想起来这一婆,然后printf是这么写i的:++i++i--i--i++然后出问题报错。当时我更加一头雾水,就没管了。没想到是这样的。。。让我来分析一下。如果从右往左。那么右1:-8,但是i之后变成7了,先打印-i,i=8,所以是-8,然后i--,i就变7了。然后开始第二个。-i++,应该为-7,然后i=8。不符合你说的是-8的情况。如果是-8,倒是很符合从左往右算。于是我打开VS编了一下。打印出来的值 为
8,8,7,8,-7,-8。真的不是-8。我们可能用的编译器不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 17:45:26 | 显示全部楼层
405794672 发表于 2020-6-1 16:41
其实我遇到这个时也是一头雾水。后来我想起来这一婆,然后printf是这么写i的:++i++i--i--i++然后出问题报 ...

我试过类似的,不同编译器打印值可能不同的。考试的话根据题目设计思路来答吧。
比如++i的意思是我先将i+1,再读取它。以此类推,至于为什么不同编译器会不一样,我也不知道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 23:52:44 From FishC Mobile | 显示全部楼层
分开来看不就好了嘛,  它们都是各算个的吧,  先不管正负的, 先赋值的吧后在运算, 所以是负8 了呗, 新手刚学回答, 回答不好见谅哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 13:19:37 | 显示全部楼层
好像是由于c语言语法限制比较宽松,所以有关自增自减的具体运算其实是看编译器的,因编译器而不同,这种问题其实没什么意义(小甲鱼有个视频也提到了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 17:23:35 | 显示全部楼层
考试要考这种题目?出题人是脑瘫还是只认识某一个编译器啊。
贴吧也是经常出现这种提问贴,真是无语啊。
我之前回答过的一个类似的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 17:24:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 17:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表