Форум программистов, компьютерный форум CyberForum.ru

Логический оператор AND - C++

Восстановить пароль Регистрация
 
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
24.05.2014, 11:16     Логический оператор AND #1
Помогите понят что делает этот код и как.
C++
1
2
char *cp="Hello World!";
while(cp && *cp)
Я не могу понят первая строка указатель или массив. Если это массив то где фигурные скобки, или оператор new. В любом случае *cp указывает на "Hello World!". Тогда что делает цикл while? cp или *cp не может быт false ибо один инициализиован как строка другой адрес. Если я рассуждаю верно то цикл while теряет свою значимость ( он не чего не делает.) Но я могу ошибаться ( по моему я не прав с большой вероятностью)

Добавлено через 1 минуту
Вообще что означает cp && *cp?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 11:16     Логический оператор AND
Посмотрите здесь:

C++ Логический тип данных
C++ Логический элемент «2-2И-2ИЛИ-НЕ»
C++ Логический драйвер
C++ Логический сдвиг влево
Логический тип C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 2
Завершенные тесты: 1
24.05.2014, 11:20     Логический оператор AND #2
проверили указатель cp на 0 и символ на '\0'
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
24.05.2014, 11:32     Логический оператор AND #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Altair42 Посмотреть сообщение
Я не могу понят первая строка указатель или массив. Если это массив то где фигурные скобки, или оператор new.
это указатель на строковый литерал. То есть на константную строку, которая заранее загружена куда-то в память, не мы её выделяли, мы её даже изменить не можем, только "указать" на неё указателем и читать.
Цитата Сообщение от Altair42 Посмотреть сообщение
Тогда что делает цикл while? cp или *cp не может быт false ибо один инициализиован как строка другой адрес.
в языке С++ условие это не только true или false. Это любое выражение. Условие выполняется, если выражение принимает любое ненулевое значение. В данном случае, условие цикла это то, чтобы И сам указатель не был нулевым И на нулевой символ в строке не указывал.
Цитата Сообщение от Altair42 Посмотреть сообщение
while теряет свою значимость ( он не чего не делает.)
ничего...
нет, очевидно, внутри цикла указатель увеличивается на одну позицию за каждый проход, таким образом указатель указывает в цикле по очереди на все символы строки от первого до последнего. А последний символ в строке - нулевой. для этого и условие.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2014, 11:33     Логический оператор AND #4
Цитата Сообщение от Altair42 Посмотреть сообщение
Если я рассуждаю верно то цикл while теряет свою значимость
А где там сам цикл? Видно только условие цикла, поэтому о чём можно рассуждать?
Yandex
Объявления
24.05.2014, 11:33     Логический оператор AND
Ответ Создать тему
Опции темы

Текущее время: 23:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru