Требуется уточнение с неравным оператором

0

Я написал эту программу:

#include <iostream>

using namespace std;

void unequalityOperator(){

   cout << "Running unequalityOperator..." << endl;

   bool a = true, b = false;

   if ( a != b ) cout << "!=" << endl;
   if ( a =! b ) cout << "=!" << endl;
}

int main()
{
   unequalityOperator();

   system("pause");
   return 0;
}

И я был удивлен, что он бежал и печатал обе струны. Поэтому я пробовал то же самое с некоторыми другими двоичными операторами, такими как <=, >= и т.д., Но это не сработало. Поэтому я хотел бы понять, есть ли разница между != И =! ,

Я знаю, что существуют некоторые операторы, такие как +=, -= и т.д., Которые работают по-другому и, например, разница между += и =+ заключается в том, что добавление произойдет до или после (соответственно) фактической команды. И по этой причине я подозреваю, что есть разница с иерархией в реализации этих операторов, но я не совсем уверен, что.

Поэтому, пожалуйста, помогите мне понять.

  • 9
    (a =! b) -> (a = !b)
  • 0
    (a =! b) присваивает !b a . Возможно, вы также захотите взглянуть на приоритет операторов различных операторов.
Показать ещё 3 комментария
Теги:
operators

3 ответа

3
Лучший ответ

Выражение a = !b является присвоением значения !b переменной a.

Оценка этого выражения в выражении if является новым значением a.

Поскольку b задано значение false и вы присваиваете значение !b в a, это значение true.

1

В первом случае оператор != Является единственным оператором неравенства. Во втором случае это оператор присваивания = с логическим не оператором ! , Итак, во втором случае вы присваиваете not b a и возвращаете его результат true

0

Это может помочь прояснить ситуацию:

  • !=: неравномерный оператор
  • =! : это действительно два оператора: оператор присваивания и унарный логический оператор NOT
  • +=: оператор суммирования
  • =+: это действительно два оператора: оператор присваивания и оператор унарного +
  • -=: оператор разностного присваивания
  • =-: это действительно два оператора: оператор присваивания и унарный оператор

Кроме того, поскольку они были в вашем вопросе, прежде чем быть отредактированы:

  • ++=: два оператора: оператор поэтапного приращения и оператор присваивания
  • =++: два оператора: оператор присваивания и оператор приращения префикса

Надеюсь, вы заметили шаблон.

Для справки:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню