C语言在printf中使用不正确的格式说明符

示例

在第一个参数中使用不正确的格式说明符来printf调用未定义的行为。例如,下面的代码调用未定义的行为:

long z = 'B';
printf("%c\n", z);

这是另一个例子

printf("%f\n",0);

上面的代码行是未定义的行为。%f期望加倍。但是0是类型int。

请注意,如果在编译过程中(-Wformatinclang和gcc)打开适当的标志,则编译器通常可以帮助您避免此类情况。从上一个示例:

warning: format specifies type 'double' but the argument has type
      'int' [-Wformat]
    printf("%f\n",0);
            ~~    ^
            %d