C++ 什么';“的类型是什么?”;“精确性”;printf的说明符?

C++ 什么';“的类型是什么?”;“精确性”;printf的说明符?,c++,c,printf,format-specifiers,C++,C,Printf,Format Specifiers,假设我使用以下printf()说明符字符串: printf("%.*s", length, str); 它要求printf()执行以下操作。问题是length的类型是什么?我在文档中只看到对整数的简短提及 所以它看起来像是int。当字符串很长时,我似乎无法使用以下代码: const char* startOfString = ... const char* middleOfString = ... printf("%.*s", (int)( middleOfString - start

假设我使用以下
printf()
说明符字符串:

printf("%.*s", length, str);
它要求
printf()
执行以下操作。问题是
length
的类型是什么?我在文档中只看到对整数的简短提及

所以它看起来像是
int
。当字符串很长时,我似乎无法使用以下代码:

const char* startOfString = ...    
const char* middleOfString = ...
printf("%.*s", (int)( middleOfString - startOfString ), startOfString);
这样看来,我不能输出超过
INT\u MAX
个字符


那么哪种类型是精确的呢?它是
int
还是
size\u t
或其他什么?

它是
int
,这样打印的字符数不能超过
int\u MAX

根据C标准第7.21.6.1节第。5:

字段宽度或精度或两者都可以用星号表示。在里面 在这种情况下,
int
参数提供字段宽度或精度


这是一个
int
,这样打印的字符不能超过
int\u MAX

根据C标准第7.21.6.1节第。5:

字段宽度或精度或两者都可以用星号表示。在里面 在这种情况下,
int
参数提供字段宽度或精度

如果你说的“文档”是指“cpluplus.com”,我建议你找到一个更好的默认文档源。我将从类unix系统上的manpage(
manfprintf
)开始(“下一个参数……必须是int类型”)。如果你在Windows上,你可以阅读。还有。(“精度由int类型的附加参数指定”)如果“文档”是指“cpluplus.com”,我建议您找到更好的默认文档源。我将从类unix系统上的manpage(
manfprintf
)开始(“下一个参数……必须是int类型”)。如果你在Windows上,你可以阅读。还有。(“精度由int类型的附加参数指定”)