C で scanf() を使用して 2 つの値を読み込もうとしましたが、システムがメモリに書き込む値は、入力した値と等しくありません。コードは次のとおりです。
double a,b;
printf("--------\n"); //seperate lines
scanf("%ld",&a);
printf("--------\n");
scanf("%ld",&b);
printf("%d %d",a,b);
1 と 2 を入力すると、CMD は正しい値を返しますが、b = -858993460 既に試したことは次のとおりです。または %lf または %e または %g )、fflush(stdin) を使用してキーボード バッファーをクリアし、最初に b を読み取り、すべての可能な組み合わせを試してみました.32 ビット OS では double の長さに問題があることがわかりました。 double を読み取るために scanf("%lf", &f) を使用する必要があるため、何をしても、2 番目の値は常に間違っています。
Windows 7 32 ビット OS のデスクトップに MS VS Express 2012 を使用しています。