scanf 에 대해서 질문
송아리
float 형을입력할때는scanf에서 %f 를 사용하는데double 형을 입력할때는%f 하면 이상한값이 나오더라구요 %lf 해야 정상적인 값이 나오는데 그 이유가 궁금합니다.
-
자랑 2024-08-11
이유는 알고보면 되게 간단합니다. 데이터가 잘리는 현상일 뿐이거든요.
8바이트자료를 4바이트형태로 받아들이면 당연히 나머지 4바이트 부분은 어떤식으로든 손상될 수밖에 없습니다.
그럼 왜 fprintf계열은 %f, %lf 둘다 상관 없냐면...
fprintf계열의 경우 %lf나 %f나 둘다 강제로 double로 내부를 처리한다던가, long double로 처리한다던가 하는식으로 처리합니다.(그리고 화면에 뿌려줄땐 .6 던가 하는 옵션을 붙여서 뿌려주는 -
푸르니 2024-08-11
%f에서 f는 float를 의미합니다....
하지만 double은 그보다도 더 큰 부동소수점 자료형이죠...
float으로 표현을 못합니다...
그래서 더 큰 표현을 받을 수 있도록 하기 위해...
Long Float를 사용합니다....
%lf 에서 l 즉 L의 의미는 롱형 데이터의 지정입니다.
그렇기에 더블형 자료의 표현에는 %lf가 적합하다고 들어서 알고는 있지만
저도 자세한 이유까지는 모르겠습니다. -
얀 2024-08-11
네네 감사합니다.scanf인데 printf로 잘못 적었습니다.;; ㅈㅅ
근데 왜 double형은 %lf 받는건지 잘 모르겠습니다. -
권애교 2024-08-11
원칙적으로 표준안에 근거했을때,
fprintf 계열 함수에선 %lf는 기동하지 않습니다.(아예 표준안 자체에서 a A e E f F g G와 같은 format string 에선 아무런 효과가 없다고 못박고 있습니다.)
%lf는 fscanf 계열에서만 double과 같은 것을 입력받기 위해 사용됩니다.
표준상에서 fprintf계열의 %lf는 그냥 허용은 되있기 때문에 라이브러리 작성자가 알아서 처리했을 가능성이 높고, 대체로 다음과 같은 형태로 되어 있
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2694069 | unsigned 질문입니다. | 힘차 | 2025-05-07 |
2694012 | 전공 비전공자 개발자 (10) | 말글 | 2025-05-07 |
2693984 | 오버로딩이 무엇인가요? (2) | 헛매질 | 2025-05-07 |
2693956 | PlaySound재생이 안됩니다!(C에 음악넣기) | 지존 | 2025-05-06 |
2693928 | &와 *의 사용에 관한 명확한 이해 | 제나 | 2025-05-06 |
2693903 | 반복문 설명좀요 ㅠㅠ (2) | 란새 | 2025-05-06 |
2693869 | stdio.h 는 왜 쓰는건가요? (1) | 큰꽃들 | 2025-05-06 |
2693842 | 포인터 변수의 주소값끼리 더하는 것에 대해서 질문드립니다. (1) | 진솔 | 2025-05-05 |
2693811 | 소수 출력;;;; | 화이트캣 | 2025-05-05 |
2693788 | 이런 함수는 없나요? (3) | 앤드류 | 2025-05-05 |
2693758 | txt파일 불러와서 행렬로 저장 | 큰애 | 2025-05-05 |
2693727 | scanf 오류 문제!! (2) | 큰나래 | 2025-05-04 |
2693704 | 구조체 주소록 문제인데 도와주세요 (2) | 도1도캣 | 2025-05-04 |
2693676 | 열혈강의 c언어 질문입니다 | 하양이 | 2025-05-04 |
2693647 | 12.620000 을요 12.620 으로 어떻게 표현해요? (2) | 파도 | 2025-05-04 |
2693619 | 타이틀 코드.. | 단순드립 | 2025-05-03 |
2693591 | 컴파일 에러에서 질문드립니다 (3) | 게자리 | 2025-05-03 |
2693463 | 동적할당 이용시 fwrite사용을 어떻게 해야하나요..? (10) | 일본어못해요 | 2025-05-02 |
2693387 | 배열문제입니다 수정오류캡쳐했습니다 (6) | 연하얀 | 2025-05-01 |
2693356 | text 입출력 내림차순 질문입니다 ㅠ | 빛글 | 2025-05-01 |