ダブルを使用すると、これが私のコードを台無しにする理由を本当に知りたいです。私の理解では、double は単により正確な浮動小数点数です。しかし、次のコードでは、float を double に置き換えると、奇妙な出力が得られます。これは、すべてのコードが入力を受け取り、それを吐き出すことだけを行っているにもかかわらずです。
#include <stdio.h>
int y;
int z;
int i;
int n;
int r;
int c;
float e;
float d;
void main() {
puts("Enter Row Number:");
scanf("%i", &r);
puts("Enter Column Number:");
scanf("%i", &c);
float x[r][c];
int j = r;
for(y = 1; y <= r; y++) {
for(z = 1; z <= c; z++) {
scanf("%f", &x[y][z]);
}
}
for (y = 1; y <= r; y++) {
for(z = 1; z <= c; z++) {
printf("%g\t", x[y][z]);
}
puts("\n");
}
}
float を使用する場合、行に 2、列に 3 を入力した後、1 ~ 6 の数字を入力すると、予想どおり 1 ~ 6 の出力が得られます。しかし、代わりに double を使用し、入力を以前と同じに保つと、{1.36224e-312,1.78905e-307, 1.81506e-307, 3.15957e+263, 5.3568e-315, 3.44886e-313 の出力が得られます。 }。明らかに、それは正しいとは言えません。また、ここで複素数を扱っているわけでもありません... 1 ~ 6 の整数だけです。何を与える?