C++ 中的"if"语句不会从左到右计算条件
"if" statement in c++ doesn't evaluate conditions from left to right
我指的是问题">"IF"参数求值顺序?"来理解C ++中"if"语句的求值顺序。
下面是以错误顺序计算 if 语句中的条件的代码。
#include <iostream>
using namespace std;
int main()
{
int t = 0;
if((1 / t) == 1 && t != 0)
{
cout << "0" << endl;
}
cout << "1" << endl;
return 0;
}
结果是 1 而不是浮点异常。
除以零是未定义的行为。任何事情都可能发生。
[expr.mul]/4
如果/或 % 的第二个操作数为零,则行为未定义。
除以零并不能保证每次程序都会抛出运行时错误。 这就是为什么除以零是一种未定义的行为。
如 C 标准所述;
/运算符的结果是第一个操作数除以第二个操作数的商;% 运算符的结果是余数。在这两个操作中,如果第二个操作数的值为零,则行为未定义。
至于C++(03-5.6.4(;
二进制/运算符产生商,二进制 % 运算符产生除法的余数 第一个表达式由第二个表达式。如果/或 % 的第二个操作数为零,则行为未定义;否则 (a/b(*b + a%b 等于 a。如果两个操作数都是非负数,则余数为非负数; 如果不是,则余数的符号是实现定义的
相关文章:
- C++ 中的"if"语句不会从左到右计算条件
- 如何从一组具有从左到右优先级的整数值创建有序整数键?
- 返回对常量结构(指针类型)成员的引用:明显的左值到右值转换
- 如何使用递归计算从 0 到给定数字的奇数?
- 出于什么原因,有必要将常量左值引用绑定到右值?
- 平衡数组索引,同时从左和右对数组求和
- 从左到右携带的二进制加法
- 从左到右打印字符串的组合(不是排列)c++
- 后缀从左到右的递增和递减是关联还是相反?
- 从左到右从所有类型创建嵌套包
- 在这种情况下,从左到右的结合性是什么意思
- 为什么C++类型的表达式没有从左到右进行解释
- C++计算器,从左到右读取并包含 +,-,/,*
- 算术表达式求值从左到右或反向
- 使用方向枚举列表时反转方向(从左到右或从上到下)
- 对 [] 运算符的嵌套调用是从左到右计算的
- 在C++中从左到右上下进行坐标
- *(乘法)运算符的结合性不是从左到右的
- 逻辑与或:保证从左到右的求值
- 在MFC中从左到右平滑地移动椭圆对象