在C,我们可以将“&”的变量之前找出该变量的地址。 我有一个32位的机器。每当我在控制台打印地址,控制台显示一个7位十进制数。我只是想知道怎么就这么数(10 ^ 7)相关的32位机。 (2 ^ 32)由于

有帮助吗?

解决方案

您可能应该将其打印出来,可以是指针或十六进制值:

printf ("address = %p\n", &variable);
printf ("address = %x\n", &variable);

这会给你的最多8位十六进制数(您的32位地址空间)。

一个32位数字的范围从00000000 <子> 16 通过FFFFFFFF <子> 16 (通过在十进制0 4,294,967,295),所以它可以是最多10个十进制数字。

你只得到一个7位基10号的原因是因为你的变量是隔靴搔痒的地址空间的顶部。

其他提示

其中在存储器中的变量的土地具有与其在什么样的存储的(即,栈VS静态数据),以及如何将可执行已映射那些段到内存中执行。

尝试静态分配2500万个整数数组,并采取最后一个地址..敢打赌,你看到一个数字,也许更接近起来亿。 (不要在这方面太忘乎所以不过,除非你想看看会发生什么,当你的系统运行了公羊=)

您可以做

printf("0x%08x", &whatever)

..得到充分的8个十六进制数字用零填充在左边填充。

在“0X”部分不是绝对必要的,但它有助于避免混淆,如果/当,三个星期后,再次运行该程序,你碰巧在看不具有AF字符十六进制数它

最大的32位数字,为0xFFFFFFFF以十六进制,转换为4294967296(底为10),所以你需要10个十进制数字来显示最大的32位数字。较低的数字将使用更少的位数(为0x1只需要1)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top