C++中语句v[--i] = 100的操作优先级与执行步骤问询
关于
v[--i] = 100的执行步骤解析 你的理解是错误的,实际执行顺序并非先访问vector的200元素再递减i,正确步骤如下:
- 先计算
--i:变量i初始值为1,执行前缀递减操作后,i的值变为0。 - 用求值后的下标访问vector元素:以0作为下标调用
v.operator[](0),得到vector第一个元素(初始值0)的引用。 - 完成赋值操作:将100赋值给这个引用,最终vector变为
{100, 200}。
关键误区澄清
后缀表达式(如v[i])优先级高于一元前缀表达式(如--i),指的是语法结构上的绑定优先级,而非求值顺序。这里的--i是[]运算符的实参,根据C++标准,函数(包括运算符函数)的实参必须在函数调用之前完成求值。也就是说,v[--i]的语法结构是v[ (--i) ],而非(v[i])--(后者才是后缀优先级主导的场景)。
内容的提问来源于stack exchange,提问作者João Cartucho
相关产品推荐
相关产品推荐

