Я имел в виду вопрос"ЕСЛИ" порядок оценки аргумента?«для понимания порядка вычисления оператора» if «в c ++.
Вот код, в котором условия в операторах 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 вместо исключения с плавающей запятой.
Деление на ноль — неопределенное поведение. Все может случиться.
Если второй операнд / или% равен нулю, поведение не определено.
деление на ноль не гарантирует, что каждый раз, когда программа выдаст вам ошибку во время выполнения. Вот почему деление на ноль — неопределенное поведение.
как С стандартные состояния;
Результатом оператора / является частное от деления первого операнда на второй; результат оператора% — остаток. В обеих операциях, если значение второго операнда равно нулю, поведение не определено.
как для C ++ (03-5.6.4);
Двоичный / оператор дает частное, а бинарный оператор% — остаток от деления
первого выражения вторым. Если второй операнд / или% равен нулю, поведение не определено; иначе
(a / b) * b + a% b равно a. Если оба операнда неотрицательны, то остаток неотрицателен;
если нет, знак остатка определяется реализацией