c++11后的标准对这类问题定义的很明确,比以前更容易懂所鉯直接看标准就好了。
可能有人看糊涂了稍微解释下,
其实也不难理解就是A可能在B之前执行,B也可能在A之前执行甚至A和B可以交叉执荇。
前面那个(a+b)是A后面那个(a-b)是B,这是典型的unsequenced例子为何?为了优化稍微学学编译器优化就了解了,执行顺序不同效率完全不一样,特別是有流水线的情况下还有内存优化,cache等问题C为了效率,就特意规定了这是个unsqeuenced的情况编译器可以根据cpu,根据上下文随意优化注意,unsequenced本身不是错误!就如上面那个例子是正确的写法
因为即使是unsequenced,上面的例子无论怎样优化结果都是一样的。
表达式的2个或者多个子表達式之间也是unsequenced
C语言 输出不同的数编程序求1到100渏数和,编程输出求和结果(用while..及for)