Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу помогите с strcmp()
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
morihey morihey вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.09.2011
По умолчанию помогите с strcmp() - 11.09.2011, 22:01

такая вот непонятка в голове:

cpp Код:
if(!strcmp(s1, s2)) printf("строки одинаковы\n");

Нафига этот знак восклицания? Он же означает "Не".

Если s1 и s2 совпадают, то это правда ( true ).
Написано ясно в книге Шилдта, что, когда s1 и s2 совпадают, то функция возвращает 0. Я так понял, что возвращается "правда".

Было бы проще написать:
cpp Код:
if(strcmp(s1, s2) == 0) printf("строки одинаковы\n");

Объясните мне педагогически, пожалуйста.

ПС: еще:
cpp Код:
if(!func())
{......}

это как? Типа: "Если func() не является работоспособной?
Ответить с цитированием
  (#2 (permalink)) Старый
alexu alexu вне форума
Member
 
Сообщений: 433
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 01.06.2007
По умолчанию 12.09.2011, 15:02

cpp Код:
if(!func()) эквивалентно if(func() == 0)
if(func())  эквивалентно if(func() != 0)

и означает: "если возвращаемое функцией значение равно нулю", или "не равно нулю" и ничего более. Написать можно и так и так, разницы никакой не будет. ИМХО разработчики специально всё усложнили и запутали, чтобы всяким начинающим вроде нас с тобой жизнь мёдом не казалась.
Ответить с цитированием
  (#3 (permalink)) Старый
PREsideNT PREsideNT вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.12.2010
По умолчанию 12.09.2011, 17:46

Просто 0 в С++ воспринимается как false, все что не 0 это true.
По этому что написать if(!func()) эквивалентно if(func() == 0), но первый варинт короче.
Ответить с цитированием
  (#4 (permalink)) Старый
morihey morihey вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.09.2011
По умолчанию 12.09.2011, 21:49

непривычно 0 воспринимать как false......Но это в голове сразу все решило Спасибо вам за четкие ответы! Буду учить дальше.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно пользоваться strlen, strcpy, strcmp Diver Visual C++ 4 11.06.2004 14:17
Почему неправильно работают функции strcat и strcmp Anonymous Вопросы начинающих программистов 7 18.05.2004 20:36



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов