Usama Iftikhar Butt Ответов: 3

Разница между & и && в C/C++


К черту всех...!
В чем разница между одиночными &усилитель; и двойной &ампер;&ампер; в C/C++.

Что я уже пробовал:

Я запускаю этот код.
bool f() { std::cout << "f"; return false; }
bool g() { std::cout << "g"; return true; }

int main()
{
	f() && g();

	cout << endl;

	f() & g();
}

The out put is:
f
fg

Может ли кто-нибудь объяснить это?

3 Ответов

Рейтинг:
25

Jinto Jacob

То && оператор не вычисляет второй операнд, если первый операнд становится ложным. Побитовое & оператор всегда вычисляет свои операнды.

В вашем случае на && функция f() выполнить и распечатать f на экране и так как он возвращает false, вторая функция не выполняется.

Во втором случае, когда вы звоните & это бит-мудрый оператор и он оценивает оба оператора, т. е. вызывает оба f() и g() и печать Ф от функции Фуст АНФ г с функцией второго. отсюда и вывод fg

для получения более подробной информации прочтите это[^]


CPallini

5.

Рейтинг:
18

Patrice T

Читайте о побитовых и логических операторах: Операторы в C и C++ - Википедия[^]
Для & (логический оператор) применяется ярлык.
У вас есть формула 'f() && g ()', которая стала 'false && g ()', но в этот момент, независимо от значения 'g ()', глобальный результат ложен.


CPallini

5.

Patrice T

Спасибо