少し前に、間違った数値データがログ ファイルに書き込まれる原因となるバグ a を探していました。問題は、次と同等のコードであることが判明しました。
int main(void) {
struct {
double a;
int b;
} s = { 1, 2 };
printf("%lf\n", s.a);
printf("%lf\n", s.b);
}
出力していた
1.000000
1.000000
どうやらprintf
、スタックではなく、浮動小数点レジスタの 2 番目の値を期待していたようです。将来このような間違いが起こらないようにするには、すべての printf パラメータをキャストして、実際に期待される型であることを確認する必要がありますか?