嗯,我很抱歉。我认为这个问题已经在其他地方得到了解答,但我无法找到解决方案。 我有一个int类型的变量和一个C语句的if语句,我不知道这个语句检查什么。
int a;
if(a==0x6634522)
{
//do some stuff
}
如果已经在其他地方回答过,我真的很抱歉..
答案 0 :(得分:4)
a==0x6634522
检查a
是否等同于十六进制0x6634522
((6634522)
16 = (107169058)
10 < / sub>))或不。它正在检查a
中存储的值,而不是a
(&a
)的地址。
答案 1 :(得分:3)
只是检查a
是否与十六进制数6634522相同。每当将0x放在整数常量前面时,C将其解释为十六进制数。
答案 2 :(得分:3)
if
语句只不过是一个测试,用于确定未初始化的变量a
是否具有十六进制整数值0x6634522
。它不太可能是真的。您的代码示例等同于:
int a;
if(a==107169058)
{
//do some stuff
}
...因为十六进制(基数16)表示法中的0x6634522
是十进制(基数10)表示法中的107169058
。
确实,分配给指针变量的内存地址通常使用十六进制数来分配,但这是所采用的历史约定的反映,因为内存地址空间几乎总是在地址上进行,该地址是2的幂并且十六进制表示法提供一个更紧凑的表示。但是C中没有要求对数字或指针值使用十进制,十六进制或甚至八进制数字文字。
答案 3 :(得分:1)
如果a
等于107169058它会做一些事情,但由于a
尚未初始化,因此不太可能做任何事情。