Два знака равно в программировании

Привет!Хочу узнать почему не выводиться командой printf строка если нету второго знака ‘=’ в операторе if (if(str[i]=’’)), разве это не обычный знак равенства? дайте ссылку где можно про знаки прочитать

char str[10]="Привет!";
int len=0;

for(int i=0;i Вопрос задан более трёх лет назад

  • 2710 просмотров
  • Простой знак равенства в C-подобных языках — это оператор присвоения. Как правило, он возвращает результат присвоения. Двойной знак равенства — это оператор сравнения, и возвращает он bool.

    Собственно, в условном операторе необходимо, чтобы выражение в скобках после ключевого слова if возвращало именно bool, так что простое присвоение в данном случае не сработает. Поэтому и нужен двойной знак равенства.

    В вашем конкретном коде очевидно, что вам знакома операция присвоения (len = len + 1), но в этом случае достаточно воспользоваться операцией инкремента (len++).

    Тут все плохо:

    1. Длина массива не связана с его содержимым, нужно заменить
      char str[10]="Привет!";
      на
      char str[]="Привет!";
    2. Привязанность к магической константе 10 и лишний счетчик. Измерение длины строки можно сделать вот так:

    после чего в len будет искомая длина строки.

    Если необходима защита от строк чрезмерной длины:

    Логические выражения и логический тип данных

    Часто в реальной жизни мы соглашаемся с каким-либо утверждением или отрицаем его. Например, если вам скажут, что сумма чисел 3 и 5 больше 7, вы согласитесь, скажете: «Да, это правда». Если же кто-то будет утверждать, что сумма трех и пяти меньше семи, то вы расцените такое утверждение как ложное.

    Подобные фразы предполагают только два возможных ответа – либо "да", когда выражение оценивается как правда, истина, либо "нет", когда утверждение оценивается как ошибочное, ложное. В программировании и математике если результатом вычисления выражения может быть лишь истина или ложь, то такое выражение называется логическим.

    Например, выражение 4 > 5 является логическим, так как его результатом является либо правда, либо ложь. Выражение 4 + 5 не является логическим, так как результатом его выполнения является число.

    На позапрошлом уроке мы познакомились с тремя типами данных – целыми и вещественными числами, а также строками. Сегодня введем четвертый – логический тип данных (тип bool). Его также называют булевым. У этого типа всего два возможных значения: True (правда) и False (ложь).

    Здесь переменной a было присвоено значение True, после чего с помощью встроенной в Python функции type() проверен ее тип. Интерпретатор сообщил, что это переменная класса bool. Понятия "класс" и "тип данных" в данном случае одно и то же. Переменная b также связана с булевым значением.

    В программировании False обычно приравнивают к нулю, а True – к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу:

    Возможно и обратное. Можно преобразовать какое-либо значение к булевому типу:

    И здесь работает правило: всё, что не 0 и не пустота, является правдой.

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

    Говоря на естественном языке (например, русском) мы обозначаем сравнения словами "равно", "больше", "меньше". В языках программирования используются специальные знаки, подобные тем, которые используются в математике: > (больше), = (больше или равно), c = a == b состоит из двух подвыражений. Сначала происходит сравнение (==) переменных a и b . После этого результат логической операции присваивается переменной c. Выражение a , b , c просто выводит значения переменных на экран.

    Сложные логические выражения

    Логические выражения типа kByte >= 1023 являются простыми, так как в них выполняется только одна логическая операция. Однако, на практике нередко возникает необходимость в более сложных выражениях. Может понадобиться получить ответа "Да" или "Нет" в зависимости от результата выполнения двух простых выражений. Например, "на улице идет снег или дождь", "переменная news больше 12 и меньше 20".

    В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения. Широко используются два оператора – так называемые логические И (and) и ИЛИ (or).

    Чтобы получить True при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все сложное выражение будет ложным.

    Чтобы получить True при использовании оператора or, необходимо, чтобы результат хотя бы одного простого выражения, входящего в состав сложного, был истинным. В случае оператора or сложное выражение становится ложным лишь тогда, когда ложны оба составляющие его простые выражения.

    Допустим, переменной x было присвоено значение 8 ( x = 8 ), переменной y присвоили 13 ( y = 13 ). Логическое выражение y 8 будет выполняться следующим образом. Сначала выполнится выражение y . Его результатом будет True. Затем выполнится выражение x > 8 . Его результатом будет False. Далее выражение сведется к True and False , что вернет False.

    Если бы мы записали выражение так: x > 8 and y , то оно также вернуло бы False. Однако сравнение y не выполнялось бы интерпретатором, так как его незачем выполнять. Ведь первое простое логическое выражение ( x > 8 ) уже вернуло ложь, которая, в случае оператора and, превращает все выражение в ложь.

    В случае с оператором or второе простое выражение проверяется, если первое вернуло ложь, и не проверяется, если уже первое вернуло истину. Так как для истинности всего выражения достаточно единственного True, неважно по какую сторону от or оно стоит.

    В языке Python есть еще унарный логический оператор not, т. е. отрицание. Он превращает правду в ложь, а ложь в правду. Унарный он потому, что применяется к одному выражению, стоящему после него, а не справа и слева от него как в случае бинарных and и or.

    Здесь у возвращает True. Отрицая это, мы получаем False.

    Число 5 трактуется как истина, отрицание истины дает ложь. Ноль приравнивается к False. Отрицание False дает True.

    Практическая работа

    Присвойте двум переменным любые числовые значения.

    Используя переменные из п. 1, с помощью оператора and составьте два сложных логических выражения, одно из которых дает истину, другое – ложь.

    Аналогично выполните п. 2, но уже с оператором or.

    Попробуйте использовать в логических выражениях переменные строкового типа. Объясните результат.

    Напишите программу, которая запрашивала бы у пользователя два числа и выводила бы True или False в зависимости от того, больше первое число второго или нет.

    Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса.

    Лучше всего почитать объяснение в официальной документации .

    Оператор равенства == сравнивает две переменные с приведением типов, если это необходимо. Если 2 операнда имеют разный тип, они приводятся к одному, и затем сравниваются.

    Оператор идентичности === проверяет, являются ли переменные равные и при этом имеют одинаковый тип. То есть, грубо говоря, если у операндов будет разный тип, то === сразу же вернёт false, не будет даже смотреть на их значения.

    Я составил таблицу, которая наглядно демонстрирует, как 2 переменные соотносятся друг с другом.

    ‘===’ означает, что они считаются идентичными.
    ‘==’ означает, что они считаются равными.
    ‘!=’ означает, что они не считаются равными.


    [an error occurred while processing the directive]
    Карта сайта