-3

. ピリオド記号がフィールド幅を正確に区切ることを知ってい ます。しかし、ゼロが の後にどのように来るのかわかりません%。実行するたびに、同じ出力が表示されます。

コード:

#include <stdio.h>
int main() { printf("%. %. %. "); return 0; }

出力: %.0 %.0 %.0

main.c:13:15: warning: unknown conversion type character 0x20 in format [-Wformat=]                                                                                                         
main.c:13:18: warning: unknown conversion type character 0x20 in format [-Wformat=]                                                                                                         
main.c:13:21: warning: unknown conversion type character 0x20 in format [-Wformat=]                                                                                                         
4

1 に答える 1

3

後に有効な変換指定子を指定しなかったため%(たとえばdxfgc、など)、未定義の動作を呼び出してsます。つまり、何でも起こり得るということです。p

ISO C99 標準のセクション 7.19.6.1/9 から:

変換指定が無効な場合、動作は未定義です。239)いずれかの引数が対応する変換仕様の正しい型でない場合、動作は未定義です。

于 2019-09-19T15:17:00.557 に答える