【发布时间】:2021-01-13 05:39:04
【问题描述】:
在 C99 第 5.1.2.3 条第 2 段中,
访问 volatile 对象、修改对象、修改文件或调用函数 执行这些操作中的任何一个都是副作用,它们是状态的变化 执行环境。
C 标准定义了 副作用 就像上面一样。但似乎 C99 没有解释访问 volatile 对象、修改对象、修改文件的确切含义(在第 3 节中定义了访问、修改、对象的定义是什么。但是如何访问 volatile 呢?修改什么对象? 和修改什么文件?)。
当我用词副作用搜索时,C99 中有一些示例。但是我不能确定每个示例是否被分类为访问易失性对象、修改对象和修改文件。
我阅读了What is side effect in c? 和Are side effects a good thing?,但仍然感到困惑。
我的问题是C 标准是否明确描述了副作用 的含义?它们是什么意思?
【问题讨论】:
-
他们打算说 C 不是一种函数式语言。在(纯)函数式语言中,没有副作用。
-
@wildplasser 那么
modifying an object中的对象不代表C源代码中的任何标识符吗? -
@opol 一个对象不需要在 C 中具有 am 标识符,只需一个指定它的左值表达式。
标签: c side-effects