Post

misc print problem

size_t和跨平台问题

需要注意的是size_t在不同平台下的具体数据类型可能是不一样的,如果要log输出,具体的控制符可能需要使用%zu,z可以控制具体的长度。

实际场景下可以记住一个参考的标准,int小于等于数据线的宽度,size_t大于等于地址线宽度。

size_t存在的最大原因可能是因为:地址线宽度历史中经常都是大于数据线宽度的。

有些机器下int和int64_t的定义都不尽相同,关于跨平台的问题,可以参考why is size_t matters查看具体的原因。

打印指针的地址

打印指针的地址,可以使用%p,这个是通用的,不需要关心具体的数据类型。

1
printf("%p\n", reinterpret_cast<void*>(ptr));

或者直接用cout也能输出指针的地址。

1
std::cout << reinterpret_cast<void*>(ptr) << std::endl;
This post is licensed under CC BY 4.0 by the author.

Trending Tags