작성
·
748
0
부동소수점 관련 강의를 듣고 있는와중
float a = 0xb.aP1;
printf("%a",a);
로 작성하면 강의에 나온 출력값과 같이 나오는데,
printf("%x, %a",a,a); 로 작성하면 원하는 값이 나오지 않습니다.
왜그런건가요?
답변 3
2
이 부분은 저도 잘 몰랐던 부분이네요. 다시 질문주셔서 감사합니다.
https://stackoverflow.com/questions/7480097/what-happens-to-a-float-variable-when-d-is-used-in-a-printf
C 에서 float를 함수의 인수로 받을 때 8byte double의 형태로 변환하는 것이 표준이라는군요.
때문에 printf("%x %a", a, a) 를 해주게되면 double의 8byte 중에서 4byte가 %x에 들어가고, 나머지 4byte 이후가 %a로 들어가서 출력이 된다고 합니다.
하지만 이상한 값이 출력되는 것이니 사용상에 주의가 필요하겠다. 라고 여기시면 되겠습니다.
그리고... 다음 질문부터는 해당강의에 올려주시고, 강의의 어느부분인지도 함께 적어주세요.
0
이미 16진수 정수형태로 표현된수는 %x를 이용해 16진수 정수형태로 표현하면 0 이나오는 이유는 뭔가요? 또한 첫번째 식을이용해 출력한 %a 값이랑 두번째 식을 이용한 %a 값이 다른 이유는 뭔가요?
0