Поведение по модулю с оператором if в C ++

c++

35 просмотра

1 ответ

Почему этот код возвращает 5. Сначала if возвращает 5% 2 = 1 и если false на if (1). почему так

#include <iostream>

using namespace std;

int fn_test(int i=5)
{
    if(i%2) return i++;
    else
    return fn_test(i-1);
}
int main()
{ int test=fn_test(5);
   cout<< " this is out put " << test;
   return 0;
}
Автор: Hazan Источник Размещён: 08.11.2019 11:20

Ответы (1)


1 плюс

Решение

Результатом 5%2является , 1как вы заметили, что не равно нулю и , следовательно , «истинный». Только ноль - «ложь», все остальное - «истина».

Это означает, что вы делаете return i++, что возвращает старое значение i(т. Е. 5) Перед увеличением i.

Автор: Some programmer dude Размещён: 20.08.2016 01:11
Вопросы из категории :
32x32