这是一个非常简单的代码
#include <stdio.h>
void main()
{
printf( "\n" );
printf( "%.512x", 0xFFFFFFFF );
printf( "\n" );
}
问题是 - 我需要一个大于512的精度(打印超过512个符号)。但看起来有一个限制。如果我用任何更大的值替换512 - 输出结果不会改变。
我使用Visual Studio 2008和Windows XP。
有没有办法避免这种限制?
答案 0 :(得分:2)
原始ANSI C(C.89)标准仅声明:
任何转换产生的最大字符数的最小值应为509。
更高版本(C.99和C.11)将此扩展为4095字节。因此,您的编译器似乎符合C.89。
作为一种解决方法,您可以在0
之前打印出您想要的F
个数,也许是字符串。
char zeros[1000];
memset(zeros, '0', sizeof(zeros));
zeros[sizeof(zeros)-1] = '\0';
printf("\n%s%x\n", zeros, 0xFFFFFFFF);
答案 1 :(得分:0)
您可以将其拆分为两个或多个部分(每个部分短于512个符号),例如使用模运算符。拆分后,您可以使用两个printf() - 命令打印数字而不受限制。