相关疑难解决方法(0)

为什么"volatileQualifiedExpr + volatileQualifiedExpr"不一定是C中的UB而是C++中的UB?

当我今天阅读C标准时,它说的是副作用

访问易失性对象,修改对象,修改文件或调用执行任何这些操作的函数都是副作用

和C++标准说

访问由volatile glvalue(3.10)指定的对象,修改对象,调用库I/O函数或调用执行任何这些操作的函数都是副作用

因此,因为禁止在同一个标​​量对象上发生无序的副作用,C允许以下内容,但C++使其未定义行为

int a = 0;
volatile int *pa = &a;

int b = *pa + *pa;
Run Code Online (Sandbox Code Playgroud)

我正确地阅读了规格吗?如果出现差异,原因是什么?

c c++ side-effects volatile

11
推荐指数
1
解决办法
389
查看次数

标签 统计

c ×1

c++ ×1

side-effects ×1

volatile ×1