Помогите с задачкой на C++!

Я не могу понять эту задачку.

Нужно написать программу, которая считывает три целых числа и проверяет, что ровно два из них — положительные. Например, если на вход подаётся 1 1 0, программа должна вывести true, а если введено 1 1 1 или 0 0 0 — то false. Попробуйте решить задачу, не применяя if.


Ответы (1 шт):

Автор решения: MBo

Вам нужно придумать функцию или выражение, которое будет давать 1 для положительных чисел и 0 для отрицательных и нуля (арифметика или битовые трюки).

Сумма результатов может быть 0, 1, 2, 3. Из них подходит только 2 - для этой суммы нужно вывести true.

ideone

int x = 1, y = -2, z = 666;
string falsetrue = "FFTF";
cout << falsetrue[((-x >> 31) & 1) + ((-y >> 31) & 1)  + ((-z >> 31) & 1)];
→ Ссылка