두 번 사용할 때 왜이 코드가 내 코드를 왜 망쳐 놓고 있는지 알고 싶습니다. 내 이해에서, double은 단순히 더 정확한 부동 소수점 숫자입니다. 그러나 다음 코드에서 float를 double로 바꾸면 모든 코드가 입력을 받아서 다시 꺼내더라도 엉뚱한 출력을 얻습니다. 예상대로 열의 행 2를 입력 한 후, 플로트를 사용하는 예에서 float에 비해 홀수 출력을 두 번 생성합니다.
#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");
}
}
, 3은, 그 번호 1-6, I는 1-6의 출력을 얻는다. 그러나 double을 대신 사용하고 입력을 이전과 동일하게 유지하면 {1.36224e-312,1.78905e-307, 1.81506e-307, 3.15957e + 263, 5.3568e-315, 3.44886e-313의 출력을 얻게됩니다. }. 분명히 그것은 정정하기에 더 가깝지도 않습니다. 그리고 여기에 복소수를 다루는 것과 같지 않습니다. 단지 정수 1-6입니다. 뭐라 구요?
double을 쓰는 경우'% lf '로 입력을 읽어야한다 – nhahtdh
'x [r] [c]'와 같은 배열을 정의하면 그 배열에 유효한 인덱스는'0'..'r-1 '및'0'..'c-1'. –
나는 당신의 코드가 1 ... r (r은 데이터 구조의 크기)에서 반복되고 C 배열과 행렬은 0 ... r-1로 번호가 매겨지기 때문에 코드가 세그먼트 화 오류를 생성하지 않는다는 것에 놀란다. –