在 printf 中使用不正確的格式說明符
在 printf
的第一個引數中使用不正確的格式說明符會呼叫未定義的行為。例如,下面的程式碼呼叫未定義的行為:
long z = 'B';
printf("%c\n", z);
這是另一個例子
printf("%f\n",0);
上面的程式碼行是未定義的行為。%f
預計會翻倍。但是 0 是 int
型別。
請注意,如果在編譯期間開啟正確的標誌(-Wformat
in clang
和 gcc
),編譯器通常可以幫助你避免這類情況。從最後一個例子:
warning: format specifies type 'double' but the argument has type
'int' [-Wformat]
printf("%f\n",0);
~~ ^
%d