この出力の理由を理解できなかったコード行が数行あります..
int main()
{
int a=5;
float b=10.5,c=11.0;
printf("%d",b);
printf("\n%d",c);
printf("\n%f",a);
return 0;
}
Visual C++ の O/p :- 0 ,0 ,0.000000
gcc コンパイラ:- 0,0, 11.000000
この出力の理由を理解できなかったコード行が数行あります..
int main()
{
int a=5;
float b=10.5,c=11.0;
printf("%d",b);
printf("\n%d",c);
printf("\n%f",a);
return 0;
}
Visual C++ の O/p :- 0 ,0 ,0.000000
gcc コンパイラ:- 0,0, 11.000000
のような可変引数関数を呼び出すとprintf
、float
s は に昇格しdouble
ます。int
s はそのまま渡されます。printf
したがって、あなたが書くとき、そしてdouble
あなたが書くときを期待しています。%f
int
%d
したがってdouble
、を与えずに を与えることは、未定義の動作です。同様に、関数が an を期待するときにa を渡すことも未定義です。int
double
int
いつものように、未定義の動作は「何かが起こる可能性がある」ことを意味します。決して、未定義の動作に頼らないでください。
未定義または未指定の動作で遊んでいます。それらのどれであるかはわかりません。gcc 4.7.2 を使用する Debian では、出力に -780714744、4195886、11.000000 が表示されます。