Ami*_*yan 26 c printf pointers
哪些字符应该用于ptrdiff_t在printf?
请问C标准明确说明如何打印ptrdiff_t的printf?我还没找到任何人.
int a = 1;
int b = 2;
int* pa = &a;
int* pb = &b;
ptrdiff_t diff = b - a;
printf("diff = %?", diff); // % what?
Run Code Online (Sandbox Code Playgroud)
tro*_*foe 26
是的%td.看到这里.
chu*_*ica 12
C11草案解释了ptrdiff_t7.21.6.1中的长度修改器7" fprintf功能"
t
用于指定后续的d,i,o,u,x,或X转换说明适用于ptrdiff_t或相应的无符号整数类型参数; 或者以下n转换说明符适用于指向ptrdiff_t参数的指针.
使用"%td"如下:信用:@trojanfoe
ptrdiff_t diff = b - a;
printf("diff = %td", diff);
Run Code Online (Sandbox Code Playgroud)
如果编译器不支持"%td",则转换为签名类型 - 越长越好.然后确保替代格式和参数匹配.
// Note the cast
printf("diff = %lld", (long long) diff); // or
printf("diff = %ld", (long) diff);
Run Code Online (Sandbox Code Playgroud)
参考格式说明符