如果(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”都是不必要的。