班kj 发表于 2020-1-11 20:56:55

刚入门C++,对自增自减有点疑问...

i++是先进行运算再自增1
++i是先自增1再进行运算
小甲鱼的这道例题
#include <stdio.h>
void main()
{
        int i=5,j=5,p,q;
        p=(i++)+(i++)+(i++);
        q=(++j)+(++j)+(++j);
        printf("%d,%d,%d,%d",i,j,p,q);

       
}
为什么p=15,q=22?
我想讲讲我的(错误)思路{:10_266:} :
p=5+6+7=18 此时i=8
q=6+7+8=22 此时j=8

zltzlt 发表于 2020-1-11 21:09:41

这可能是编译器的问题。

楼主,你确定 6+7+8=22?

班kj 发表于 2020-1-11 21:20:10

zltzlt 发表于 2020-1-11 21:09
这可能是编译器的问题。

楼主,你确定 6+7+8=22?

{:10_266:}打错了,我的思路是6+7+8=21
跑出来是22

班kj 发表于 2020-1-11 21:22:04

班kj 发表于 2020-1-11 21:20
打错了,我的思路是6+7+8=21
跑出来是22

后缀++的优先级比普通的加减运算还低吗?{:10_266:}
就算如此,不是每个i++还加了个优先级最高的括号吗?

人造人 发表于 2020-1-12 00:32:01

班kj 发表于 2020-1-11 21:22
后缀++的优先级比普通的加减运算还低吗?
就算如此,不是每个i++还加了个优先级最高的括号吗 ...

这类问题不同的编译器很可能会有不同的结果
不用纠结这类问题了
页: [1]
查看完整版本: 刚入门C++,对自增自减有点疑问...