M.M*_*M.M 13 c c99 language-lawyer
在C99中,术语算术运算出现了16次,但我没有看到它的定义.
术语算术运算符仅在文本中出现两次(同样没有定义)但它确实出现在索引中:
算术运算符
添加剂,6.5.6,
G.5.2按位,6.5.10,6.5.11,6.5.12
递增和递减
,6.5.2.4,6.5.3.1乘法6.5.5,G.5.1
移位,6.5.7
一元,6.5. 3.3
然后我们将+ - | &(二进制)++ -- *(二进制)/ % << >> ~作为算术运算符,如果索引被认为是规范的!
也许我们应该将算术运算识别为算术运算符的使用.但F9.4.5表示该sqrt()功能也是算术运算,详情请参考IEC 60559(又名IEEE754).因此,必须有算术运算,而不仅仅是算术运算符的使用.
由于我们没有正式的定义,让我们看看我们是否可以拼凑出对算术运算应该是什么的基本解释.这将是推测性的,但我找不到任何明显的缺陷报告或未解决的问题.
我想我会从被认为是算术类型的东西开始,这将在章节6.2.5 类型第18段中说明(强调我的未来):
整数和浮点类型统称为算术类型. 每种算术类型属于一种类型域:真实类型域包括真实类型,复杂类型域包括复杂类型.
好的,所以我们知道算术运算必须对整数或浮点类型进行操作.什么是手术?看起来我们已经很好地定义了5.1.2.3 程序执行第2段中的内容,其中说:
访问易失性对象,修改对象,修改文件或调用执行任何这些操作的函数都是副作用,11)这些是执行环境状态的变化.[...]
因此修改对象或调用执行该操作的函数,这是一个操作.什么是对象?科3.14说:
执行环境中的数据存储区域,其内容可以表示值
虽然标准似乎更宽松地使用术语操作来表示评估,例如在7.12.1 错误条件处理部分中说:
除非另有说明,否则为其输入参数的所有可表示值指定每个函数的行为.每个函数都应该像单个操作一样执行,而不会产生任何外部可见的异常条件.
并在6.5 表达第8段中说:
浮动表达式可能会被收缩,也就是说,它被评估为原子操作[...]
所以这似乎暗示评估是一项操作.
因此,从这些部分看来,几乎所有的算术运算符和任何数学函数都属于算术运算的常识定义.
| 归档时间: |
|
| 查看次数: |
299 次 |
| 最近记录: |