鱼C论坛

 找回密码
 立即注册
查看: 1977|回复: 9

[已解决]自增和自减问题

[复制链接]
发表于 2021-7-11 13:10:32 | 显示全部楼层 |阅读模式

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

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

x
44.jpg 222.jpg 333.jpg
大佬们给看看这几个简单的问题,我脑回路想不过来,谢谢
最佳答案
2021-7-11 13:59:13
1.大写字母”K“的ASCII码为 75(因为a的最后赋值为字符K,但a的类型为整型)
2.倒数第三行  此时i为9  输出9后进行自减
   倒数第二行  此时i为8  可理解输出8后对8自增变为9,最后在前面加上负号
   倒数第一行  此时i为9  输出9后在前面加上负号变为-9,再进行自增i为10
3. 按顺序来的话心算结果应该是6+7+8=21
    查了查好像跟编译器有关系,不同编译器答案还不一样,有的编译器算出来好像是24
    但是自增自减顺序应该是一样的,三个括号,从左到右,依次自增,
    p=和q=的每一行代码执行结束后相当于自增了三次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-11 13:21:04 From FishC Mobile | 显示全部楼层
第一个a后面不是二次赋值了吗
第二个根本就没有解析的必要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-11 13:22:20 | 显示全部楼层
wp231957 发表于 2021-7-11 13:21
第一个a后面不是二次赋值了吗
第二个根本就没有解析的必要

二次赋值就输出第二次吗?那a=y有啥用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 13:23:51 From FishC Mobile | 显示全部楼层
MZZ666 发表于 2021-7-11 13:22
二次赋值就输出第二次吗?那a=y有啥用?

在这个例子中就没有用了,因为后赋值的覆盖先赋值的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 13:24:09 | 显示全部楼层
MZZ666 发表于 2021-7-11 13:22
二次赋值就输出第二次吗?那a=y有啥用?

没用,a=c1后a就等于75了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 13:59:13 | 显示全部楼层    本楼为最佳答案   
1.大写字母”K“的ASCII码为 75(因为a的最后赋值为字符K,但a的类型为整型)
2.倒数第三行  此时i为9  输出9后进行自减
   倒数第二行  此时i为8  可理解输出8后对8自增变为9,最后在前面加上负号
   倒数第一行  此时i为9  输出9后在前面加上负号变为-9,再进行自增i为10
3. 按顺序来的话心算结果应该是6+7+8=21
    查了查好像跟编译器有关系,不同编译器答案还不一样,有的编译器算出来好像是24
    但是自增自减顺序应该是一样的,三个括号,从左到右,依次自增,
    p=和q=的每一行代码执行结束后相当于自增了三次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-13 17:52:06 | 显示全部楼层
永恒的蓝色梦想 发表于 2021-7-11 13:24
没用,a=c1后a就等于75了

好嘞 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-13 17:53:08 | 显示全部楼层
WUT—WXL 发表于 2021-7-11 13:59
1.大写字母”K“的ASCII码为 75(因为a的最后赋值为字符K,但a的类型为整型)
2.倒数第三行  此时i为9  输 ...

多些老兄 解释地太地道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-13 18:04:36 | 显示全部楼层
WUT—WXL 发表于 2021-7-11 13:59
1.大写字母”K“的ASCII码为 75(因为a的最后赋值为字符K,但a的类型为整型)
2.倒数第三行  此时i为9  输 ...

兄弟 那个倒数第2行负号(-)运算符的优先级比自增(++)运算符的优先级高,所以输出-i也就是输出-8,这个我明白了,输出-8后不是自增为-7吗?所以我理解的就是在执行完倒数第二行后得到的i是-7,最后一行i则输出7.不知道这样理解哪里有错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-14 10:16:11 | 显示全部楼层
MZZ666 发表于 2021-7-13 18:04
兄弟 那个倒数第2行负号(-)运算符的优先级比自增(++)运算符的优先级高,所以输出-i也就是输出-8,这 ...

负号(-)的优先级其实是跟(++)运算符的优先级一样的。
同为2级相同的优先级情况下,此时运算的方式是从右至左的,也就是意味着先执行++或者--运算符完成自增自减,此时i任然为正数,之后再执行- ,才会变成负数

实际上-i++就是 -(i++)
c中负数的逻辑其实是以补码的形式实现的,实际计算机中机器计算的部分其实只有一大推的0和1的计算,机器最底层的计算过程中是没有负号的其实

优先级顺序参考这个https://blog.csdn.net/yuliying/article/details/72898132
c中负数储存可以参考这个https://blog.csdn.net/u010603798 ... 1018.2226.3001.4187
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 01:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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