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

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

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

Поясните пару строчек - C++

12.06.2013, 17:35. Просмотров 249. Ответов 9
Метки нет (Все метки)

Приветствую форумчане!
Поясните пожалуйста пару кусочков программы.
1 часть:
char a;
a=0;
if (!a)
{
...
};

В каком случае будет выполняться условие оператора if ?

2 часть:
int p1,p2,p3;
if (p1|p2|p3)
{
...
};

Что за условие в операторе?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 17:35     Поясните пару строчек
Посмотрите здесь:

Есть готовая рабочая прога. Нужно дописать пару строчек... - C++
Вот программа (полностью рабочая): #include <iostream> #include <conio.h> using namespace std; #define N 10 template...

Поясните пожалуйста пару строк кода - C++
Доброго времени суток. Помогите пожалуйста "по научному" объяснить пару строчек кода, препода мое объяснение не устраивает(( ...

Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару - C++
Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару. Например, исходные данные: 1,2; результат:3,5

Преобразовать строку, удалив из нее каждую пару символов ‘<<’ и повторив каждую пару символов ‘>>’. - C++
В веденной пользователем строке, найти все вхождения подстроки и заменить ее на другую. Прошу помощи!

Подсчет строчек в файле - C++
Здравствуйте, Подскажите, пожалуйста, как подсчитать кол-во строк в текстовом файле и вывести каждую строку поочередно на экран?

Обмен строчек в матрице - C++
вообщем немогу найти ошибку(ничего не меняет #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale&gt; using namespace std; ...

Матрица, сумма строчек - C++
Вообщем мне нужно подправить вывод матрицы(чтобы выводилась как матрица и сумму строчек // matraca.cpp: определяет точку входа для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
449 / 298 / 20
Регистрация: 22.03.2011
Сообщений: 966
Завершенные тесты: 2
12.06.2013, 17:40     Поясните пару строчек #2
Любое число, отличное от нуля это true. Ноль это false.

1. Условие !a выполниться тогда и только тогда, когда (char) a будет равен 0.
2. Это битовое или.
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
12.06.2013, 17:43     Поясните пару строчек #3
В первом случае, если а = 0. В данном случае, так и есть. Как бы логично: if обрабатывает логические выражения true (1) и false(0). !true = false = 0.
Во втором случае каждое число переводится в двоичную систему и производится побитовое или. К примеру.
p1 = 00110101
p2 = 10010111
p1|p2 = 10110111
Результат возвращается в начальную систему исчисления (в нашем случае система исчисления - 10).
Там, где была хотя бы одна единичка в том же разряде. В вашем случае сначала проверятся первые два, потом результат и третий. Но разницы нет, принцип будет, что если в разряде среди трех чисел есть хоть одна 1, то в результате в этом разряде будет 1.
Ivan575
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 19
12.06.2013, 17:45  [ТС]     Поясните пару строчек #4
Цитата Сообщение от stima Посмотреть сообщение
Любое число, отличное от нуля это true. Ноль это false.

1. Условие !a выполниться тогда и только тогда, когда (char) a будет равен 0.
2. Это битовое или.
т.е. во втором примере условие будет выполняться только в случае когда хотя бы один из операндов не ноль?
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
12.06.2013, 17:47     Поясните пару строчек #5
Ivan575, нет, это не логическое или, а битовое или. Выше написано принцип его работы: перевод числа в битовую запись (двоичную), и сравнение разрядов
Ivan575
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 19
12.06.2013, 17:49  [ТС]     Поясните пару строчек #6
аааа спс дошло Всем +1
stima
449 / 298 / 20
Регистрация: 22.03.2011
Сообщений: 966
Завершенные тесты: 2
12.06.2013, 17:49     Поясните пару строчек #7
Цитата Сообщение от Ivan575 Посмотреть сообщение
т.е. во втором примере условие будет выполняться только в случае когда хотя бы один из операндов не ноль?
Да. Если одно из чисел не ноль, то уже гарантированно выполнение.

2Nikoys Как раз таки да. Можете расписать через биты, если один из битов не ноль (о чем цитата выше), то условие выполнится. И это же условие, один из битов не ноль, говорит о том что одно из чисел не ноль.
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
12.06.2013, 17:54     Поясните пару строчек #8
stima, я имел в виду принцип работы будет не логическим или. Разумеется, что если одно из чисел не ноль, то битовая запись будет ненулевая и сразу будет выполнение условия.
А если у человека это будет записано выражением каким-то? Он будет оперировать уже не с 0 и 1, а с некоторым числовым выражением

Добавлено через 1 минуту
Грубо говоря:
C++
1
if(p1|p2|p3 - p1|p2)
не то же самое, что
C++
1
if(p1||p2||p3 - p1||p2)
stima
449 / 298 / 20
Регистрация: 22.03.2011
Сообщений: 966
Завершенные тесты: 2
12.06.2013, 17:56     Поясните пару строчек #9
Цитата Сообщение от Nikoys Посмотреть сообщение
А если у человека это будет записано выражением каким-то?
Дело в том, что человек спросил другое))) Я Вашу мысль понял, но просто есть вопрос и есть конкретный ответ.))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 17:57     Поясните пару строчек
Еще ссылки по теме:

Некорректное отображение строчек анкеты C++ - C++
При введении на экран анкеты происходит некорректное отображение строчек Номер телефона?= Место учебы?=. Подскажите, как это исправить? ...

Какое предназначание каждой из строчек - C++
#include &lt;iostream&gt; using std::cout; int main () { cout&lt;&lt;&quot;Унылая пора! Очей очарованье!\n&quot;; cout&lt;&lt;&quot;Приятна мне твоя...

Промежуток между написанием строчек - C++
Я работаю через программу dev c++ и недавно я столкнулся с проблемой при написании следующего: cout&lt;&lt;rus(&quot; Тут текст1&quot;)&lt;&lt;endl; ...

Программа для склеивания строчек - C++
Всем доброго времени суток.столкнулся с такой проблемой,писали на лаба программу для склеивания строчек на С++,принес домой,отказывается...

Разбор строчек небольшого кода - C++
Помогите разобрать каждую строку ( что она делает - описание ) #include &lt;iostream&gt; using namespace std; int main(){ unsigned...


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

Или воспользуйтесь поиском по форуму:
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
12.06.2013, 17:57     Поясните пару строчек #10
stima, сойдемся на том, что ваш ответ был правильным, а я немножко заглянул вперед. Может, это и было излишним
Yandex
Объявления
12.06.2013, 17:57     Поясните пару строчек
Ответ Создать тему
Опции темы

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