C++标准是否允许添加两个整数(基本类型int)来抛出C++异常?

rub*_*nvb 14 c++ exception c++11

标准是否允许这样做?

我不这么认为.有人这样做.我需要聪明的人来证明他是错的.

And*_*owl 30

是的,它确实.有符号整数的溢出是未定义的行为,因此任何事情都可能发生(包括抛出异常).

作为旁注,我必须说大多数实现都不太可能发生(但绝对可能); 正如C++ 11标准在第5/4段的注释中提到:

如果在评估表达式期间,结果未在数学上定义或未在其类型的可表示值范围内,则行为未定义.[ 注意:大多数现有的C++实现忽略整数溢出.除零处理,使用零除数形成余数,所有浮点异常因机器而异,通常可通过库函数调整. - 尾注]

然而,正如hvd在评论中提到的,一些实现允许为整数溢出提供自定义处理程序,并且这些处理程序可能会抛出.

  • 德勤.太精彩了. (2认同)