这里有一个非常简单的代码

#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。
作为一种解决方法,您只需在0s之前打印出所需的Fs的数目,可能是一个字符串。

char zeros[1000];
memset(zeros, '0', sizeof(zeros));
zeros[sizeof(zeros)-1] = '\0';

printf("\n%s%x\n", zeros, 0xFFFFFFFF);

07-26 02:56