使用memcmp Vs. == in c(嵌入式)和意外错误

时间:2016-05-04 12:36:41

标签: c syntax embedded

我一直听说使用==运算符来比较字符可能会导致一些问题。

我的问题是 - 什么样的问题?

例如,使用之间有什么区别:

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

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

1 个答案:

答案 0 :(得分:7)

你把两个不同的想法模糊在一起。

没有错
if (Text[0] == 'A')

它会做你想要的。

你可能听到的,以及你能做什么,

if (Text == "A")

即使Text包含" A"

,这几乎总会出现错误。

如果您想比较字符串,通常使用strcmp

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

当然,这仅适用于格式正确的以null结尾的字符串。

最后,虽然你当然可以做到

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

如果你真的想要,它是一种奇怪且可能效率低下的用法,它不能为你买任何东西。