#include <stdio.h>
int main()
{
// 실수 0.5를 %d, %f로 출력
printf("%d, %f\n", 0.5, 0.5);
return 0;
}
이거 돌리면
0, 0.000000
계속하려면 아무 키나 누르십시오 . . .
이렇게나오는데 %f출력이 왜 0.000으로나오는지 모르겠슴;;
vs2017
#include <stdio.h>
int main()
{
// 실수 0.5를 %d, %f로 출력
printf("%d, %f\n", 0.5, 0.5);
return 0;
}
이거 돌리면
0, 0.000000
계속하려면 아무 키나 누르십시오 . . .
이렇게나오는데 %f출력이 왜 0.000으로나오는지 모르겠슴;;
vs2017
printf("%d, %f \n", 0.5, 0.5); 다음부터는 코드 잘 확인하고 하셔야 됨요. 제 생각에는 너무 피곤해서 이거 제대로 못 본듯. 어서 취침ㄱㄱㄱ 나는 공장알바 하러ㄱㄱㄱ... ㅠㅠㅠ
억씨 역슬래쉬 안먹네요
printf("%d, %f ₩n", 0.5, 0.5);
아, 그리고 VS 2017은 절차지향 플밍도 되긴 되는데 oop지향이 더 강해진 툴임요. C언어책 완독하시고 반드시 C++ 공부시작 해야됨요
아 이거 vs에서 바로 디시로 복사해오니까 가 안따라오고 지워졌는데 코드상에서는 제대로 \\n 되어있는데도 %f 값이 0.000으로 나와요;;
아, 미안요... 제가 지금 공장알바 중이라서... 다시 고쳐드리겠음요... 잠시만요.
ㄴ 고마워요
#include <stdio.h>int main(void){ float num =0.5; // 실수 0.5를 %d, %f로 출력 printf("%f, %d \n", num, num); return 0;}
아... ㅡㅡ;;;
#include <stdio.h>
댓글돌이...ㅡㅡ;;;;;;;;;
다시 갑니다.
#include <stdio.h>
int main(void){
float num =0.5;
// 실수 0.5를 %d, %f로 출력 printf("%f, %d \n", num, num);
악씨
printf("%f, %d \n", num, num);
return 0;
}
난 이렇게 풀었음요.. 지금 공장라인 미친듯이 돌아가려고 해서 이제 가봐야 됨요. 이렇게 작동하는 이유는 본인이 찾아보셈요.
감사합니다 해봤는데 %f %d 순서로 하면 잘나오는데 %d %f순서로 써서 해보면 %f값이 0.00000 으로 나와요
않이 왜이러지;;
저 이제 작업 시작해야되서...이유는 본인이 찾아보셈요...ㅈㅅ
ㄴ 네 고마워요
ㅋㅋ ㅇㅇ 잘 모르네
제가 지금 공장알바 때문에 겁나게 바빠서 그럼
printf는 다인자 함수라서 %d를 쓰면 4바이트만 읽는다.
힌트를 주자면 c컴파일러는 prefix 방식 입니다.
저거 보다 더 좋은 코드가 있는데 넘 바쁘다 보니 생각난게 저거였음
다인자 함수는 인자로 넘어가는 값의 데이터형도 암시적으로 바뀌는 게 있어서 좀 복잡함
관련해서 검색하면 "왜" 그런지 알 수 있을 게야.
Little endian 이라는 것도 참고하고.
부동소수점 표현 모르면 그것도 알아봐야 하니, 쌩초보이고 천재가 아니라면 그냥 다 넘어가라.
넘 복잡하다 싶으면 내가 힌트로 준 prefix만 생각해보셈ㅇㅇ
%lf로 찍어봐
만약에 prefix로도 이해를 못하겠다 싶으면 'C언어는 원래 부터 겁나게 예민한 언어'라는 것에 힌트가 있음. C언어는 고수준 언어라고 거의 알고들있지만 쉽게 말하자면 잘못된 메모리 접근을 c컴파일러가 자동 감지하고 막아주는 기능이 생겨서
간신히 고수준 언어가 된 것임ㅇㅇ
printf에서 %lf 는 %f랑 같은 거야
이것 역시 다인자 함수 인자의 데이터 타입 암시적 변환과 관련이 있는 거다.
float를 넘기면 double로 저장해버림
%lf는 그냥 %f 앞에 long 붙이는 것 밖에 지나지 않음.
오우