0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
1

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

24.05.2014, 11:16. Показов 1004. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2014, 11:16
Ответы с готовыми решениями:

Логический оператор or
Мне, правда, очень стыдно :) но я не понимаю, как правильно прописать следующее: cin >> n; if...

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

Не выполняется логический оператор &&
Добрый день. В данном коде #include <iostream> #include <string> #include <cstdlib> using...

Логический оператор
Есть ли не побитовый логический оператор исключающее ИЛИ (XOR) ? Или его нужно реализовывать...

3
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
24.05.2014, 11:20 2
проверили указатель cp на 0 и символ на '\0'
0
3833 / 3134 / 872
Регистрация: 25.03.2012
Сообщений: 11,575
Записей в блоге: 1
24.05.2014, 11:32 3
Лучший ответ Сообщение было отмечено Altair42 как решение

Решение

Цитата Сообщение от Altair42 Посмотреть сообщение
Я не могу понят первая строка указатель или массив. Если это массив то где фигурные скобки, или оператор new.
это указатель на строковый литерал. То есть на константную строку, которая заранее загружена куда-то в память, не мы её выделяли, мы её даже изменить не можем, только "указать" на неё указателем и читать.
Цитата Сообщение от Altair42 Посмотреть сообщение
Тогда что делает цикл while? cp или *cp не может быт false ибо один инициализиован как строка другой адрес.
в языке С++ условие это не только true или false. Это любое выражение. Условие выполняется, если выражение принимает любое ненулевое значение. В данном случае, условие цикла это то, чтобы И сам указатель не был нулевым И на нулевой символ в строке не указывал.
Цитата Сообщение от Altair42 Посмотреть сообщение
while теряет свою значимость ( он не чего не делает.)
ничего...
нет, очевидно, внутри цикла указатель увеличивается на одну позицию за каждый проход, таким образом указатель указывает в цикле по очереди на все символы строки от первого до последнего. А последний символ в строке - нулевой. для этого и условие.
1
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2014, 11:33 4
Цитата Сообщение от Altair42 Посмотреть сообщение
Если я рассуждаю верно то цикл while теряет свою значимость
А где там сам цикл? Видно только условие цикла, поэтому о чём можно рассуждать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2014, 11:33
Помогаю со студенческими работами здесь

Логический оператор IF
Люди помогите пожалуйста, есть такая проблемма: на фомре стоит DBGrid, при двойном клике по...

Вернуть логический оператор
Можно ли в js вернуть логический оператор, который бы корректно работал? А-ля: function...

Логический оператор ИЛИ , и результат
ЛОГИЧЕСКИй ОПЕРАТОР ИЛИ. в оглавлении ошибся. Добрый вечер, вот ситуация, есть несколько объектов...

Тернарный и логический оператор - что оптимальнее
Что выгоднее использовать с точки зрения оптимизации памяти - тернарные операторы ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru