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

elt*_*lti 0 c embedded syntax

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

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

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

if (Text[0] == 'A') { ; }
Run Code Online (Sandbox Code Playgroud)

if (!memcmp(Text, "A", 1)) { ; }
Run Code Online (Sandbox Code Playgroud)

Ste*_*mit 7

你把两个不同的想法模糊了.

这没什么不对

if (Text[0] == 'A')
Run Code Online (Sandbox Code Playgroud)

它会做你想要的.

你可能听到的,你不能做的,是

if (Text == "A")
Run Code Online (Sandbox Code Playgroud)

即使Text包含"A" ,这几乎总是会出错.

如果要比较字符串,通常使用strcmp:

if(strcmp(Text, "A") == 0)
Run Code Online (Sandbox Code Playgroud)

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

最后,虽然你当然可以

if (!memcmp(Text, "A", 1))
Run Code Online (Sandbox Code Playgroud)

如果你真的想,这是一个奇怪的,可能效率低下的用法,它不会给你任何东西.