asc*_*ler 10
严格来说,有很多评估正在进行中argv[1][2](相当于(argv[1])[2])
argv12argv[1]argv[1][2]如果不知道操作符的值是什么,就不能真正地计算运算符表达式,因此#1和#2必须在#4之前发生,而#3和#4必须在#5之前发生.
当然,"评价1"并没有多大意义,因为它只是一个字面上的已知值.但是如果表达式是相似的argv[f1()][f2()],那么子表达式评估的顺序可能很重要.
在C++高达C++ 14版本中,它是在未指定argv[f1()][f2()]是否f1()或f2()首先被调用.C++ 17在子表达式的顺序上引入了许多额外的保证,包括数组下标的规则:in A[B],所有的子表达式的评估和副作用A现在都发生在子表达式的所有评估和副作用之前B.所以C++ 17保证在这种情况下f1()将被调用f2().