c의 scanf를 사용하여 이중 값 판독
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은 이미 시도했습니다. 이중 대신 float 또는 int 사용, scanf_s 사용, %i 또는 %li, %lf 또는 %e 또는 %g에 대해 scanff%d 또는 %f 사용, flush(stdin)를 사용하여 키보드 버퍼를 클리어하고 가능한 모든 조합으로 읽습니다.32비트 OS의 double 길이에 문제가 있어 scanf("%lf")와 &f를 사용하여 double을 읽어야 한다는 것을 알게 되었습니다.내가 무엇을 하든, 두 번째 값은 항상 틀립니다.
Windows 7 32비트 OS에서 데스크톱용 MS VS Express 2012를 사용하고 있습니다.
를 사용합니다.%lf
형식 지정자를 사용하여 이중을 읽습니다.
double a;
scanf("%lf",&a);
Wikipedia에는 사용 가능한 형식 지정자에 대한 적절한 참조가 있습니다.
를 사용해야 합니다.%lf
형식 지정자를 사용하여 결과도 출력합니다.
printf("%lf %lf",a,b);
제가 아는 한,%d
소수점이 없는 숫자인 십진수를 의미합니다.이중 값을 로드하려면%lf
변환(롱 플로트).같은 이유로 당신의 가치가 틀렸다면%d
는 정수(사용 방법을 알고 있는 경우는 문자도 포함) 번호에만 사용됩니다.
예:
double a,b;
printf("--------\n"); //seperate lines
scanf("%lf",&a);
printf("--------\n");
scanf("%lf",&b);
printf("%lf %lf",a,b);
잘못된 포맷 시퀀스를 사용하고 있습니다.double
, 를 사용해 주세요.%lf
대신%ld
:
double a;
scanf("%lf",&a);
형식 지정자printf
그래야 한다%f
위해서doubl
이후 데이터 유형float
데이터틸은 최종적으로 로 변환된다.double
내부 데이터 유형printf
.
인쇄할 조항이 없습니다.float
data. double in printf의 올바른 형식 지정자.
두 번째 값을 스캔할 때는 다음 코드 행을 사용합니다.scanf(" %lf", &b);
또한 모든 %ld를 %lf로 교체합니다.
입력 스트림 버퍼와 관련된 문제입니다.fflush(stdin)를 사용할 수도 있습니다. 첫 번째 스캔 후 입력 버퍼를 지운 다음 두 번째 스캔f가 예상대로 작동합니다.또는 첫 번째 scanf 행 뒤에 getch(); 또는 getchar(); 함수를 배치하는 방법도 있습니다.
사용.%lf
이 문제를 해결하는 데 도움이 됩니다.
사용방법:
scanf("%lf",&doub)
언급URL : https://stackoverflow.com/questions/13730188/reading-in-double-values-with-scanf-in-c
'programing' 카테고리의 다른 글
외부 함수와 C++의 비교 (0) | 2022.09.01 |
---|---|
vee-validate: 조건을 충족하는 경우에만 필요합니다. (0) | 2022.09.01 |
"A generic array of T is created for a vararargs parameter" 컴파일러 경고를 해결할 수 있습니까? (0) | 2022.08.25 |
v-for 루프 Vue 2의 동적 V-모델 이름 (0) | 2022.08.25 |
사용자가 vue js에 로그인한 후 인증 토큰을 저장하려면 어떻게 해야 합니까? (0) | 2022.08.25 |