Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > логическое отрицание


Автор: wwwdiz 17.12.2006, 20:36
В букваре в одном из листингов нашёл след:
int j=0;
.....
.....
if (!j)
{
.....
}

!j это вообще возможно такое? впервые вижу!!! 

Автор: Daevaorn 17.12.2006, 20:47
Цитата(wwwdiz @  17.12.2006,  21:36 Найти цитируемый пост)
!j это вообще возможно такое? впервые вижу!!!  

Да, а что не нравится?

Автор: Xenon 17.12.2006, 20:53
wwwdiz, а почему бы нет?
После !j оно будет равно 1. 

Автор: GrafCharodey 18.12.2006, 10:54
Xenon, ну после этой операции 1 она равняться не будет, так как здесь нет никакого присваивания... Просто данное условие будет выполнено при j отличное от нуля... 
Символ "!" является логическим оператором отрицания...

Автор: Natalka 18.12.2006, 11:07
  
 if (!j) 
означает,что если j не равно 0, то будет выполняться какое- то условие, потому-что j у нас по условию=0;

Автор: vinter 18.12.2006, 11:21
Цитата

означает,что если j не равно 0, то будет выполняться какое- то условие, потому-что j у нас по условию=0;

наоборот smile, если j отлично от нуля ,то после отрицания мы получим 0, что есть false и не заход в цикл..

Автор: dumb 18.12.2006, 11:26
Цитата(wwwdiz @  17.12.2006,  20:36 Найти цитируемый пост)
if (!j)

Цитата(GrafCharodey @  18.12.2006,  10:54 Найти цитируемый пост)
данное условие будет выполнено при j отличное от нуля...

с точностью до наоборот.

Автор: Voldemar2004 18.12.2006, 11:46
if (истина) <операторы>

истинным считается число, отличное от 0. Для оператора if это может быть 10, 100 и т.д. 
if(!1) <не выполняются операторы> Легко проверить: не истина = ложь, не ложь = истина.

Автор: Xenon 18.12.2006, 17:37
GrafCharodey, ну да smile я образно 

Автор: GrafCharodey 20.12.2006, 13:26
dumb, точно)) 0 у нас является false, остальное true...

Автор: Anikmar 20.12.2006, 16:00
Цитата(GrafCharodey @ 20.12.2006,  13:26)
dumb, точно)) 0 у нас является false, остальное true...

Интересно, это прописано в стандарте C++ ?

Автор: Любитель 20.12.2006, 16:39
Да. Есть правила приведения целых типов к bool.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)