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类型的附加参数指定”)