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

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

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

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

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

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

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

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

Что за условие в операторе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поясните пару строчек (C++):

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

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

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

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

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

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

9
stima
491 / 341 / 40
Регистрация: 22.03.2011
Сообщений: 1,096
Завершенные тесты: 2
12.06.2013, 17:40 #2
Любое число, отличное от нуля это true. Ноль это false.

1. Условие !a выполниться тогда и только тогда, когда (char) a будет равен 0.
2. Это битовое или.
1
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.
1
Ivan575
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 19
12.06.2013, 17:45  [ТС] #4
Цитата Сообщение от stima Посмотреть сообщение
Любое число, отличное от нуля это true. Ноль это false.

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

2Nikoys Как раз таки да. Можете расписать через биты, если один из битов не ноль (о чем цитата выше), то условие выполнится. И это же условие, один из битов не ноль, говорит о том что одно из чисел не ноль.
1
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)
0
stima
491 / 341 / 40
Регистрация: 22.03.2011
Сообщений: 1,096
Завершенные тесты: 2
12.06.2013, 17:56 #9
Цитата Сообщение от Nikoys Посмотреть сообщение
А если у человека это будет записано выражением каким-то?
Дело в том, что человек спросил другое))) Я Вашу мысль понял, но просто есть вопрос и есть конкретный ответ.))
1
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
12.06.2013, 17:57 #10
stima, сойдемся на том, что ваш ответ был правильным, а я немножко заглянул вперед. Может, это и было излишним
0
12.06.2013, 17:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 17:57
Привет! Вот еще темы с ответами:

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

Некорректное отображение строчек анкеты 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; ...


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

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

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