В C ‘==’ когда-либо используется при присвоении переменной?

#c #syntax

#c #синтаксис

Вопрос:

Сегодня работал с некоторым кодом SASL и заметил == в приведенном ниже фрагменте. Я не эксперт в C, но единственный способ, которым я когда-либо использовал этот оператор, — это проверить равенство. Ошибка?

     if ( !conn ) {
        rc == LDAP_SUCCESS;
        goto done;
}
  

Комментарии:

1. вероятно, ошибка.

2. Это ошибка. Для существования этого кода нет причин. Хотя, чтобы ответить на вопрос в целом, оператор == мог бы использоваться при присваивании, например int success = (rc == LDAP_SUCCESS)

3. Если вы действительно скомпилируете код, вы увидите предупреждения. Рассматривайте предупреждения как ошибки — и у вас будет ваша ошибка. 🙂

4. rc == LDAP_SUCCESS; это NOP.

5. Обратите внимание: не заменяйте вслепую rc == LDAP_SUCCESS на rc = LDAP_SUCCESS (что может удалить предупреждение), но проверьте, как rc используется после done метки, и действуйте соответственно.

Ответ №1:

Это утверждение ничего не делает. Это ошибка.

Теперь вы МОГЛИ бы присвоить (rc == LDAP_SUCCESS) переменной, которая сохраняла бы логический результат этой операции (1, если true, или 0, если false).