自增和自减问题
大佬们给看看这几个简单的问题,我脑回路想不过来,谢谢
第一个a后面不是二次赋值了吗
第二个根本就没有解析的必要 wp231957 发表于 2021-7-11 13:21
第一个a后面不是二次赋值了吗
第二个根本就没有解析的必要
二次赋值就输出第二次吗?那a=y有啥用? MZZ666 发表于 2021-7-11 13:22
二次赋值就输出第二次吗?那a=y有啥用?
在这个例子中就没有用了,因为后赋值的覆盖先赋值的 MZZ666 发表于 2021-7-11 13:22
二次赋值就输出第二次吗?那a=y有啥用?
没用,a=c1后a就等于75了 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=的每一行代码执行结束后相当于自增了三次 永恒的蓝色梦想 发表于 2021-7-11 13:24
没用,a=c1后a就等于75了
好嘞 谢谢 WUT—WXL 发表于 2021-7-11 13:59
1.大写字母”K“的ASCII码为 75(因为a的最后赋值为字符K,但a的类型为整型)
2.倒数第三行此时i为9输 ...
多些老兄 解释地太地道了{:9_236:} 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.不知道这样理解哪里有错误。 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/article/details/78962666?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162622874616780255265322%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162622874616780255265322&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-78962666.first_rank_v2_pc_rank_v29&utm_term=c%E8%AF%AD%E8%A8%80%E8%B4%9F%E5%8F%B7&spm=1018.2226.3001.4187
页:
[1]