相关疑难解决方法(0)

如何在`printf()`中使用"zd"说明符?

寻找澄清使用"zd"printf().

当然,以下对于C99及更高版本是正确的.

void print_size(size_t sz) {
  printf("%zu\n", sz);
}
Run Code Online (Sandbox Code Playgroud)

C规范似乎允许printf("%zd\n", sz)取决于它的读取方式:

7.21.6.1 fprintf功能

z用于指定后续的d,i,o,u,x,或X转换说明适用于size_t或相应的符号整型参数; 或者以下n转换说明符适用于指向与size_t参数对应的有符号整数类型的指针.C11dr§7.21.6.17

这应该是作为

  1. " z指定以下d...转换说明符适用于size_t或相应的有符号整数类型参数..."(两种类型)和" z指定以下u...转换说明符适用于size_t或相应的有符号整数类型参数. .."(两种类型)

要么

  1. " z指定以下d...转换说明符适用于相应的有符号整数类型参数..."(仅限带符号类型)和" z指定以下u...转换说明符适用于size_t"(仅限无符号类型).

我一直在使用#2定义,但现在不太确定.

哪个是正确的,1,2或其他什么?

如果#2是正确的,那么可以使用"%zd"哪种类型的示例是什么?

c printf

14
推荐指数
1
解决办法
2万
查看次数

char*[]元素每个占用4个字节,char []每个占用1个字节?

为什么以下代码的输出是这样的?

char str[] = {'i', 't', 'i', 's', 'm', 'e', '\0'}; //this code equates to 7 bytes
char* str[] = {'i', 't', 'i', 's', 'm', 'e', '\0'}; //this code equates to 28 bytes
Run Code Online (Sandbox Code Playgroud)

c arrays pointers

2
推荐指数
1
解决办法
683
查看次数

标签 统计

c ×2

arrays ×1

pointers ×1

printf ×1