这是一个更基本的问题,而不是一个有用的问题,但它在这里。根据C++标准,后缀表达式(例如v[i])优先于一元表达式(例如--i),因此,我想知道程序实现v[--i] = 100;语句的实际步骤顺序是什么。
v[i]
--i
v[--i] = 100;
std::vector<int> v = {0, 200}; int i = 1; v[--i] = 100; // {100, 200}
给定前面提到的优先级,程序是否首先访问向量的元素200,然后才发生递减,在将其变为100之前指向0?
oknwwptz1#
operator []比operator --具有更高的优先级,但这在这里并不重要,因为operator[]需要计算参数--i,这意味着解析--i,然后将其值传递给operator[]运算符优先级与运算顺序不同。运算符优先级仅确定哪些运算符应用于哪些表达式。
operator []
operator --
operator[]
1条答案
按热度按时间oknwwptz1#
operator []
比operator --
具有更高的优先级,但这在这里并不重要,因为operator[]
需要计算参数--i
,这意味着解析--i
,然后将其值传递给operator[]
运算符优先级与运算顺序不同。运算符优先级仅确定哪些运算符应用于哪些表达式。