小编use*_*019的帖子

这是对序列点之间同一对象的多次访问定义良好的行为吗?

允许多次访问吗?

#include <iostream>

int main()
{
    int A[1];
    A[0] = 0;
    A[A[0]] = 1;
    std::cout << A[0];
}
Run Code Online (Sandbox Code Playgroud)

请参阅以下段落......

除非另有说明,否则单个运算符的操作数和单个表达式的子表达式的评估顺序以及副作用发生的顺序是未指定的.在前一个和下一个序列点之间,标量对象应通过表达式的计算最多修改其存储值一次.此外,只能访问先前值以确定要存储的值.对于完整表达式的子表达式的每个允许排序,应满足本段的要求; 否则行为未定义.

如果这使用A [0]的旧值,它应该是未定义的行为,对吧?

c++ language-lawyer

5
推荐指数
1
解决办法
132
查看次数

标签 统计

c++ ×1

language-lawyer ×1