If-Statement in C memory address

时间:2014-01-10 21:46:45

标签: c

嗯,我很抱歉。我认为这个问题已经在其他地方得到了解答,但我无法找到解决方案。 我有一个int类型的变量和一个C语句的if语句,我不知道这个语句检查什么。

int a;
if(a==0x6634522)
{
  //do some stuff
}

如果已经在其他地方回答过,我真的很抱歉..

4 个答案:

答案 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尚未初始化,因此不太可能做任何事情。