#include <stdio.h>
main()
{
int a;
double b;
a = 100;
b = 10.9;
printf("%dn" , a + b);
printf("%lfn", a + b);
}
이렇게 출력하면
-1717986918 하고 110.90000이 나오는데요
#include <stdio.h>
main()
{
int a;
int b;;
scanf("%d %d" , &a , &b);
printf("%d", (a + b)/2);
}
해서 아무거나 입력해서 소숫점 나와야 할숫자도 정수로 나오는데요...
저기 위에서는 -1717986918처럼 괴랄한 숫자가 나와요.
근데 밑쪽에는 같은 %d인데도 정수자리만 나오더라구요...
프로그램은 비주얼 c++ 6.0써요. 학교에서 이거 쓰거든요
같은 int에 같은 %d인데 하나는 110이 안나오고 괴랄한 숫자가 나오고 하나는 정수가 딱 떨어지게 나오거든요
main()
{
int a;
double b;
a = 100;
b = 10.9;
printf("%dn" , a + b);
printf("%lfn", a + b);
}
이렇게 출력하면
-1717986918 하고 110.90000이 나오는데요
#include <stdio.h>
main()
{
int a;
int b;;
scanf("%d %d" , &a , &b);
printf("%d", (a + b)/2);
}
해서 아무거나 입력해서 소숫점 나와야 할숫자도 정수로 나오는데요...
저기 위에서는 -1717986918처럼 괴랄한 숫자가 나와요.
근데 밑쪽에는 같은 %d인데도 정수자리만 나오더라구요...
프로그램은 비주얼 c++ 6.0써요. 학교에서 이거 쓰거든요
같은 int에 같은 %d인데 하나는 110이 안나오고 괴랄한 숫자가 나오고 하나는 정수가 딱 떨어지게 나오거든요
double + int의 결과 타입은?
더블이랑 int랑 더하면안되요? 책에는 %d의 의미는 %d의 오른쪽에 위치한 변수의 값을 정수형태로 출력하라는 내용이다. << 일케 써있고 별다른말없이 연습문제에 갑툭튀인데 답지가 없어요
int 형은 소수점을 받아 오지 못한단다. double은 소수점을 받아오지만 말이야 그렇기 때문에 int형에 소수점을 넣을경우 소수점은 쌩깜 ㅇㅋ?
그럼 책의 설명이 약간 부실한거에요? 변수의 값을 정수형태로 출력하는데 변수는 무조건 정수여야 하나요?
근데 정수가 아니잖아
더블이랑 int랑 더하는건 상관없어 그 값을 어디다 저장하느냐인데 double에다 저장한다면 실수로 들어갈것이고 int로 저장한다면 정수로 들어가게 되겠지 %d는 정수를 출력하는것이니 당연히 소수점은 나올리 만무하고 int형 자체가 정수의 변수이니 소수점이 입력될리 만무하고 ㅇㅇ
책에서 말하는 정수값 형태는 기계의 관점에서 본것이당. int랑 float는 완전히 다른 방식으로 저장돼있기 때문에 저건 에러고, 계산 결과를 캐스팅하는게 니가 애초에 하고싶었던 것인듯?
우선 긁어오는 바이트 자체가 다름
헠.. 쉽게 요약해주세여.. 그러니까 %d로 출력할때는 소수점 + 정수는 안되고 정수들로만 더해야 한다는 소리인가여? 디게 어렵네
몰라서 책 3번읽었는데 저런 내용이없어여 ㅠㅠ
int랑 float이랑 메모리의 내용을 해석하는 방법이 완전히 다르다.. 그거만 알아둬
%d로 출력할때는 인자가 int 타입이어야돼
데이터 저장하는 방식 자체가 다르고 C의 사칙연산자 종간나들은 이걸 안 고려해서 친히 자료형을 같게 맞추시오
int가 4바이트잖아? 그것이 어떤식으로 메모리에 저장되는지 확인해보고 float은 몇바잍트로 어떤식으로 저장되는지 확인해보고 각각 어떻게 출력을 시키는지 알아보렴
float도 4바이트잖아요...
책에 설명이 자세하지가 않아요... 흑흑 뭐 이런책을 교재로 쓴댜
IEEE754랑 정수 저장방식이랑 다르지
헐