2016-05-04 1 views
0

Я продолжаю слышать, что использование оператора == для сравнения символов может вызвать некоторые проблемы.Использование memcmp Vs. == in c (встроенные) и непредвиденные ошибки

Мой вопрос - какие проблемы?

Например, есть ли разница между использованием:

if (Text[0] == 'A') { ; } 

и

if (!memcmp(Text, "A", 1)) { ; } 
+3

Нет, не должно быть никаких различий. Ваш вопрос довольно расплывчатый, откуда вы слышите эти вещи? –

+2

Это не относится к встроенным системам, они работают так же, как и любая платформа C в этом случае. – Lundin

ответ

7

Вы размыты вместе две отдельные идеи.

Там нет ничего плохого с

if (Text[0] == 'A') 

Это будет делать только то, что вы хотите.

То, что вы, вероятно, слышали, и что вы не можете сделать, это

if (Text == "A") 

Это будет практически всегда выходят ложь, даже если Text содержит «A».

Если вы хотите сравнить строки, вы обычно используете strcmp:

if(strcmp(Text, "A") == 0) 

Конечно, это работает только на правильно сформированные, нулевые байты.

Наконец, в то время как вы можете, конечно, сделать

if (!memcmp(Text, "A", 1)) 

, если вы действительно хотите, это странно и потенциально неэффективное использование, которое не купить вам что-нибудь.

+0

Отлично. Большое спасибо Стиву. – elti

Смежные вопросы