如果(memcmp(版本“3”==0)

如果(memcmp(版本“3”==0),c,C,我正在编写一段代码,其语句如下: if (memcmp (version, "\x0\x0\x0", 3) == 0 ) 与版本比较的数据是什么?与“000”相比是否相同?否。 \x0是NULL的文本。 “000”是一个数字,在内存中有不同的表示形式。否。 \x0是NULL的文本。 “000”是一个数字,在内存中有不同的表示形式。否,它与“000”不同。。它正在比较三个空(0)字节。每个字节都是二进制的实际值零。这与“000”不同,后者是一个字符串,包含可打印字符0的ASCII值

我正在编写一段代码,其语句如下:

if (memcmp (version, "\x0\x0\x0", 3) == 0 )       
与版本比较的数据是什么?与“000”相比是否相同?否。 \x0是NULL的文本。 “000”是一个数字,在内存中有不同的表示形式。

否。 \x0是NULL的文本。
“000”是一个数字,在内存中有不同的表示形式。

否,它与
“000”不同。
。它正在比较三个空(0)字节。每个字节都是二进制的实际值零。这与
“000”
不同,后者是一个字符串,包含可打印字符
0
的ASCII值,即48(或30十六进制)


因此
“000”
将与
“\x30\x30\x30”
相同

不,它与
“000”
不同。它正在比较三个空(0)字节。每个字节都是二进制的实际值零。这与
“000”
不同,后者是一个字符串,包含可打印字符
0
的ASCII值,即48(或30十六进制)


因此
“000”
将与
“\x30\x30\x30”

不-这与
“000”
的比较不同。它与三个空字符进行比较。一个等价的,可能更期望的字符串是
“\0\0\0”
。或者只是一个填充了
0
的3个字符数组,在这种情况下,代码只检查3个字符。

否-这与对比
“000”
不同。它与三个空字符进行比较。一个等价的,可能更期望的字符串是
“\0\0\0”
。或者只是一个填充了
0
的3字符数组,在这种情况下,代码只检查3个字符。

“\x0\x0\x0”
等于
{0x00,0x00,0x00}
。第四个零是字符串null终止符

因此,要回答您的问题-不,这与比较
“000”
不同

'\x0'
是十六进制零,而
'0'
是字符
0
(十六进制30)的ASCII码。

“\x0\x0”
等于
{0x00,0x00,0x00,0x00}
。第四个零是字符串null终止符

因此,要回答您的问题-不,这与比较
“000”
不同


'\x0'
是十六进制零,而
'0'
是字符
0
(十六进制30)的ASCII码。

\x0
代表值为0的
char
<代码>0不同,它是代码为0x30的ASCII字符。

\x0
代表值为0的
字符<代码>0不同,它是代码为0x30的ASCII字符。

了解变量
版本的定义会很有趣。它是一个
void*
还是一个
char*
或其他奇怪的铸造。这可能是在编译过程中发出警告


为了确保没有错误,还应该谨慎地查看
版本
是如何初始化的。在程序中检查(缺少)版本号肯定是一种奇怪的方式。

了解变量
版本的定义将是一件有趣的事情。它是一个
void*
还是一个
char*
或其他奇怪的铸造。这可能是在编译过程中发出警告


为了确保没有错误,还应该谨慎地查看
版本
是如何初始化的。在程序中检查(缺少)版本号肯定是一种奇怪的方式。

\x0
(或
\0
)是NUL字符的文本。NULL(带有两个L)通常为指针保留。
“000”
不是数字-它是字符串。
\x0
(或
\0
)是NUL字符的文字。空值(带两个L)通常是指针的保留值。
“000”不是一个数字-它是一个字符串。如果您想变得棘手,可以使用
“\0\0”
(和
sizeof”\0\0“
来表示大小)。如果您想变得棘手,可以使用
“\0\0”
(和
sizeof”\0\0\0“
)来表示大小).旁注:在这种非常特殊的情况下,每个“x”都是不必要的。旁注:在这种非常特殊的情况下,每个“x”都是不必要的。