为什么C++编译器在这个简单的程序中不给予优先权(赋值下的递增运算符)?

2024-06-28

根据C/C++语言中运算符的优先级表(参见维基百科),自增运算符(++)优先于赋值运算符(=)。

有人可以解释一下为什么编译器首先在这个简单的程序中赋值(bill[x] 中的 1),然后增加索引值(i++)。我觉得应该是相反的(先增加再赋值):

#include <iostream>
using namespace std;

int bill[] = {16, 17, 18, 19, 20};

int main ()
{
  int i = 3;

  bill[(i++)] = 1; // I think it should be bill[4] = 1;

  cout << bill[0] << endl;
  cout << bill[1] << endl;
  cout << bill[2] << endl;
  cout << bill[3] << endl;
  cout << bill[4] << endl;

  cout << "Index value:" << i << endl;

  return 0;
}

输出是:

16
17
18
1
20
Index value:4

我做错了什么吗?


i正在递增,但不是在用作数组访问器之前。要获得您正在寻找的内容,请尝试使用“++i”。 (前缀而不是后缀。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么C++编译器在这个简单的程序中不给予优先权(赋值下的递增运算符)? 的相关文章

随机推荐