当我今天阅读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)
我正确地阅读了规格吗?如果出现差异,原因是什么?