プログラムを検討する
#include<stdio.h>
int main()
{
int x = 33;
float y = 5;
printf("%d %d",y,x);
return 0;
}
出力:
0 1075052544
y の値が 0 になることは UB として理解できますが、yx はそうなるのですか? これがイデオンのサンプルです。
プログラムを検討する
#include<stdio.h>
int main()
{
int x = 33;
float y = 5;
printf("%d %d",y,x);
return 0;
}
出力:
0 1075052544
y の値が 0 になることは UB として理解できますが、yx はそうなるのですか? これがイデオンのサンプルです。
y
floatに対して不適切な書式設定を使用しています。ではprintf
、「%d」は整数 (int) を表し、「%f」は浮動小数点データ (float) を表します。
これは正しい印刷方法です(x が intx
でy
y が float の場合):
printf("%f %d", y, x);
に関してはx
、その前の変数の出力に無効なフォーマットが使用されているため、おそらく(完全にはわかりませんが)正しく出力されません(y
)。
%f
浮動小数点数の出力に使用
printf("%f %d",y,x);