Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Помогите понят что делает этот код и как.
C++
1
2
char *cp="Hello World!";
while(cp && *cp)
Я не могу понят первая строка указатель или массив. Если это массив то где фигурные скобки, или оператор new. В любом случае *cp указывает на "Hello World!". Тогда что делает цикл while? cp или *cp не может быт false ибо один инициализиован как строка другой адрес. Если я рассуждаю верно то цикл while теряет свою значимость ( он не чего не делает.) Но я могу ошибаться ( по моему я не прав с большой вероятностью)

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

Логический оператор or - C++
Мне, правда, очень стыдно :) но я не понимаю, как правильно прописать следующее: cin >> n; if (n != (1|5|25)){ cout << "\n bla...

Логический оператор ИЛИ - C++
Всем привет,на днях преподаватель задал интересный вопрос: "Почему в С++ для оператора ИЛИ используют "|| ",а не "|"...

Не выполняется логический оператор && - C++
Добрый день. В данном коде #include <iostream> #include <string> #include <cstdlib> using namespace std; int main(){ ...

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки - C++
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые трудности. Будьте добры, помогите решить. Буду...

Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 - C++
В С++ я ноль, помогите пожалуйста написать прогу Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 ...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

3
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
24.05.2014, 11:20 #2
проверили указатель cp на 0 и символ на '\0'
0
Kuzia domovenok
2050 / 1895 / 173
Регистрация: 25.03.2012
Сообщений: 6,516
Записей в блоге: 1
24.05.2014, 11:32 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Altair42 Посмотреть сообщение
Я не могу понят первая строка указатель или массив. Если это массив то где фигурные скобки, или оператор new.
это указатель на строковый литерал. То есть на константную строку, которая заранее загружена куда-то в память, не мы её выделяли, мы её даже изменить не можем, только "указать" на неё указателем и читать.
Цитата Сообщение от Altair42 Посмотреть сообщение
Тогда что делает цикл while? cp или *cp не может быт false ибо один инициализиован как строка другой адрес.
в языке С++ условие это не только true или false. Это любое выражение. Условие выполняется, если выражение принимает любое ненулевое значение. В данном случае, условие цикла это то, чтобы И сам указатель не был нулевым И на нулевой символ в строке не указывал.
Цитата Сообщение от Altair42 Посмотреть сообщение
while теряет свою значимость ( он не чего не делает.)
ничего...
нет, очевидно, внутри цикла указатель увеличивается на одну позицию за каждый проход, таким образом указатель указывает в цикле по очереди на все символы строки от первого до последнего. А последний символ в строке - нулевой. для этого и условие.
1
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2014, 11:33 #4
Цитата Сообщение от Altair42 Посмотреть сообщение
Если я рассуждаю верно то цикл while теряет свою значимость
А где там сам цикл? Видно только условие цикла, поэтому о чём можно рассуждать?
0
24.05.2014, 11:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2014, 11:33
Привет! Вот еще темы с ответами:

Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости - C++
для чего нужен оператор двоеточие ( : ), если два двоеточия( :: ) - это оператор расширения области видимости.

Логический драйвер - C++
Здравствуйте! В графической программе есть оператор initgraph, в атрибутах которого нужно указать путь к файлу, содержащему логический...

Логический калькулятор - C++
Помогите пожалуйста разобраться в чём проблема. Необходимо написать программу, выполняющую сравнение двух целых чисел, не превышающих по...

Логический калькулятор - C++
Написал логический калькулятор, вроде всё правильно работает, но сайт на который я его отправляю не принимает его. Подскажите пожалуйста...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.