我想size_t在C中打印出一个类型的变量,但似乎size_t在不同的体系结构上别名为不同的变量类型.例如,在一台计算机(64位)上,以下代码不会抛出任何警告:
size_t size = 1;
printf("the size is %ld", size);
Run Code Online (Sandbox Code Playgroud)
但在我的另一台机器(32位)上面的代码会产生以下警告消息:
警告:格式'%ld'需要类型'long int*',但参数3的类型为'size_t*'
我怀疑这是由于指针大小的不同,所以在我的64位机器size_t上别名为a long int("%ld"),而在我的32位机器size_t上别名为另一种类型.
是否有专门用于的格式说明符size_t?
c size-t platform-independent format-specifiers format-string
Size_t被定义为一个unsigned整数,但它的大小取决于你是在32位还是64位机器上.什么是正确和便携的打印方式size_t?
在跨平台的c/c ++项目(Win32,Linux,OSX)中,我需要使用*printf函数来打印一些size_t类型的变量.在某些环境中,size_t是8个字节,而在其他环境中它们是4.在glibc上我有%zd,在Win32上我可以使用%Id.有一种优雅的方式来处理这个问题吗?
可能重复:
C++中64位计算机的指针大小是多少?
我在大学学习C语言.
我尝试在Windows 7/8上设置编程环境并遇到问题
这段代码:
int main()
int *p;
printf("%d",sizeof(p));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印4而不是8(大学打印8).我能做什么?
我的Windows是64位和x64处理器.
我遇到了一个问题,其中#define用于替换程序中的'int',如下所示
#define type int
int main()
{
type *a,b;
}
Run Code Online (Sandbox Code Playgroud)
这是有效的吗?虽然它在我试图打印变量b的大小时给了我错误,说b是未声明的.我想知道这背后的具体原因.请告诉我.
有些用户告诉我,我隐藏了部分代码.我没有在上面的代码片段中给出printf语句.下面是printf的代码和给出错误的代码
#define type int;
int main()
{
type* a, b;
printf("%d",sizeof(b));
}
Run Code Online (Sandbox Code Playgroud)