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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
#1

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

24.05.2014, 11:16. Просмотров 215. Ответов 3
Метки нет (Все метки)

Помогите понят что делает этот код и как.
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++ Логический сдвиг влево
Логический тип C++
C++ Логический калькулятор
C++ Логический оператор ИЛИ
C++ Логический оператор or
Логический калькулятор C++
C++ Логический калькулятор
Логический калькулятор на 6 операций C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12508 / 7070 / 794
Регистрация: 27.09.2012
Сообщений: 17,459
Записей в блоге: 2
Завершенные тесты: 1
24.05.2014, 11:20     Логический оператор AND #2
проверили указатель cp на 0 и символ на '\0'
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
24.05.2014, 11:32     Логический оператор AND #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Altair42 Посмотреть сообщение
Я не могу понят первая строка указатель или массив. Если это массив то где фигурные скобки, или оператор new.
это указатель на строковый литерал. То есть на константную строку, которая заранее загружена куда-то в память, не мы её выделяли, мы её даже изменить не можем, только "указать" на неё указателем и читать.
Цитата Сообщение от Altair42 Посмотреть сообщение
Тогда что делает цикл while? cp или *cp не может быт false ибо один инициализиован как строка другой адрес.
в языке С++ условие это не только true или false. Это любое выражение. Условие выполняется, если выражение принимает любое ненулевое значение. В данном случае, условие цикла это то, чтобы И сам указатель не был нулевым И на нулевой символ в строке не указывал.
Цитата Сообщение от Altair42 Посмотреть сообщение
while теряет свою значимость ( он не чего не делает.)
ничего...
нет, очевидно, внутри цикла указатель увеличивается на одну позицию за каждый проход, таким образом указатель указывает в цикле по очереди на все символы строки от первого до последнего. А последний символ в строке - нулевой. для этого и условие.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2014, 11:33     Логический оператор AND #4
Цитата Сообщение от Altair42 Посмотреть сообщение
Если я рассуждаю верно то цикл while теряет свою значимость
А где там сам цикл? Видно только условие цикла, поэтому о чём можно рассуждать?
Yandex
Объявления
24.05.2014, 11:33     Логический оператор AND
Ответ Создать тему
Опции темы

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