繁体   English   中英

C存储器地址中的If语句

[英]If-Statement in C memory address

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

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

如果这已经在其他地方得到回答,我真的很抱歉。

a==0x6634522检查a是否等于十六进制0x6634522(6634522) 16 = (107169058) 10 ))。 它正在检查存储在a的值,而不是a&a )的地址。

它只是检查a是否与十六进制数6634522相同。每当将0x放在整数常量前面时,C都会将其解释为十六进制数。

if语句不过是确定未初始化变量a是否具有十六进制整数值0x6634522 这不可能是真的。 您的代码示例等效于:

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

......因为0x6634522在十六进制(基数16)表示法是107169058十进制(基体10)表示法。

确实,分配给指针变量的内存地址通常使用十六进制数进行分配,但这反映了所采用的历史惯例,因为内存地址空间几乎始终在2的幂的地址范围内变化,并且十六进制表示法提供了更紧凑的格式。表示。 但是C中没有要求为数字或指针值使用十进制,十六进制甚至八进制数字文字。

如果a等于107169058,它将执行某些操作,但是由于a尚未初始化,因此不太可能执行任何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM