gpt4 book ai didi

c++ - 递增和加法运算符优先级,cpp

转载 作者:行者123 更新时间:2023-11-30 03:49:26 27 4
gpt4 key购买 nike

我有两个问题。
考虑这段代码:

int x=1,y=2;
int z =(x++)+(++y);
int w = (++x)++;
cout << z << "\t" << w << "\t" << x;

现在,这给了我 4、3 和 4,我猜 w=3 是因为这个 int w = (++x)++ 是未定义的行为,这对我来说很好。我不明白的是:我试着写这一行 int w = (++x)++; 像这样 int w =++x++; 和得到了 error: lvalue required as increment operand,但是,我看到了 here后缀优先于前缀,那么为什么不完成后缀递增,返回变量然后用前缀递增它? (就像我使用括号时所做的那样)

现在回到这一行:int z =(x++)+(++y)。我试着把它写成 int z =x+++++y 但没有用 - 同样的错误。然后我尝试了 int z =x+++(++y) 并且没问题,所以我认为发生的事情是这样的:

  1. x++
  2. ++y
  3. 补充

但如果我是对的,为什么需要括号?这是优先考虑的方式

最佳答案

so why the isn't the postfix increment done, returns the variable

后缀版本不返回引用,它返回一个值 - 前缀增量只能与引用一起使用。

通过添加括号,您已经更改了计算顺序。

关于c++ - 递增和加法运算符优先级,cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com