в заявлении, cout << (i>0)
, где i
является положительным и больше 0, сколько ударов (? > 0)
должны всегда (насколько я проверял) вывод 1?Как cout << (i > 0); делает его равным 1?
#include <iostream>
using namespace std;
int main()
{
int i = 2, j = 5;
double k = 5.0;
cout << (i%j > 0) << " " << (i/k >0) << " " << (100>0) << endl;
cout << (i%j) << " " << (i/k) << endl;
return 0;
}
Выход:
1 1 1
2 0.4
1 = истинно, 0 = ложь, это результат сравнения. Я что-то упускаю? – agilob
'i> 0' возвращает значение' bool'ean (true или false). Оператор '' '' '' '' '' '' интерпретирует это 'bool' как' int' (или некоторый другой интегральный тип) и печатает значение '0' для' false' и '1' для' true'. –
Спасибо, я не думал, что это превратилось в bool – Petarian