数学定义表达式的结果

时间:2014-06-03 06:59:17

标签: c++ language-lawyer

mathematically defined result是什么意思?

引用5/4:

  

如果在评估表达式期间,结果不是   在数学上定义或不在可表示值的范围内   它的类型,行为是未定义的。

5 个答案:

答案 0 :(得分:5)

在此声明之后有一个注释,它提供了一些类型的示例:

  

[注意:大多数现有的C ++实现忽略整数溢出。除零处理,使用零除数形成余数,所有浮点异常因机器而异,通常可通过库函数调整。 - 后注]

答案 1 :(得分:4)

例如,0/0未在数学上定义。

1/0的情况略有不同,但实际上,对于C ++标准,您可以确定它不被视为数学定义。

答案 2 :(得分:0)

这取决于背景。数学上没有定义的意思很简单:它没有在数学中定义 假设您要除以0但未定义:除法是乘法的倒数。如果a \ b=c,则b * c=a 但是如果b=0,那么b的任意倍数也是0,因此如果a != 0,则不存在此类c

另一方面,如果ab都为零,则每个实数c都满足b * c=a。无论哪种方式,当除数为零时,不可能为商指定特定的实数。 (来自维基百科)。
在代数中,函数在不在其域中的点处被称为“未定义”。 在几何学中,在古代,几何学家试图定义每个术语。例如,欧几里德将一个点定义为“没有任何部分的那个”。在现代,数学家认识到试图定义每个单词不可避免地导致循环定义,并且在几何中留下一些单词,例如“指向”,如未定义。 所以这取决于具体情况 在编程上下文中,您可以假设它意味着除以0或超出定义的范围,从而导致溢出。

答案 3 :(得分:0)

说明这一点的数学方法是,如果输入不是函数的自然域的元素,则行为是未定义的。

(第二部分,关于可表示的结果,转换为对函数的 codomain 的限制)

答案 4 :(得分:0)

"数学定义的结果"意味着它在其他类似环境中意味着同样的事情。也就是说,在大多数编程语言中存在通过某种自然映射表示各种数学概念的构造或其他程度的准确性。这种映射通常没有在文档中定义,但是读者对自然语言和常识的理解暗示了这种映射。在C ++标准中,它在各个地方被称为"通常"或"普通"数学规则。

如果您不确定此映射是什么,我猜您可以提交缺陷报告,但通常标准的用户知道2+2映射到的内容,就像他们知道ifthe之类的字一样appearrequirement2+2表示。

确实可以想象{{1}}可以映射到各种数学结构,甚至不一定与Peano算术有关,但这不是普通的"或"通常"数学符合C ++社区的标准。

因此,要回答这个问题,请使用表达式并将其映射到相应的数学概念。如果未定义,则未定义。