[英]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.