这里有一个非常简单的代码
#include <stdio.h>
void main()
{
printf( "\n" );
printf( "%.512x", 0xFFFFFFFF );
printf( "\n" );
}
问题是-我需要大于512的精度(打印超过512个符号)。但看起来有一个限制。如果我用更大的值替换512,输出结果不会改变。
我使用Visual Studio 2008和Windows XP。
有什么办法可以避免这种限制吗?
最佳答案
原ANSI C(C.89)标准仅规定:
由任何转换产生的最大字符数的最小值应为509。
后来的版本(C.99和C.11)将此扩展到4095字节。看来你的编译器符合C.89。
作为一种解决方法,您只需在0
s之前打印出所需的F
s的数目,可能是一个字符串。
char zeros[1000];
memset(zeros, '0', sizeof(zeros));
zeros[sizeof(zeros)-1] = '\0';
printf("\n%s%x\n", zeros, 0xFFFFFFFF);