인프런 커뮤니티 질문&답변

Lyw님의 프로필 이미지

작성한 질문수

[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문

데이터형변환이 안되요

해결된 질문

21.09.18 15:41 작성

·

163

1

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

int a; a = 3.141592;

cout << (float)a << endl;

cout << float(a) << endl;

return 0;

} 비쥬얼 스튜디오로 했는데 데이터형변환이 안되고 3이 출력 되네요 문제가있나요??

답변 2

0

Lyw님의 프로필 이미지
Lyw
질문자

2021. 09. 19. 19:20

그럼 인트형을 처음에 할당된 값은 강제로 형변환이 안되고 

플루트형만 형변환이 되는 건가요?? 짧게 할당된건 다시 길게 못하고 길게 할당된건 지울 수

있는 건가요??

 

 

 

 

 

 

 

 

 

 

 

판다코딩님의 프로필 이미지
판다코딩
지식공유자

2021. 09. 20. 13:05

짧게 할당된 것을 다시 길게 늘리지 못하다기 보다는,

3.141592와 같은 소수점부가 포함된 수를

int형 변수로 저장하는 과정에서 이미 3만 저장됩니다.

이를 float형으로 출력하고자 한다해도, 애초에 저장된 수가 3이 끝이기 때문에

3만 출력되는 것입니다.

Lyw님의 프로필 이미지
Lyw
질문자

2021. 09. 20. 21:06

감사합니다^^ 

 

0

판다코딩님의 프로필 이미지
판다코딩
지식공유자

2021. 09. 18. 15:47

a는 int형 변수로 선언되어 있기 때문에,

값을 할당하는 과정에서 이미 "3"만 저장됩니다.

아래의 코드를 실행해보면 더 이해하기 쉬우실 것 같습니다 :)

 

#include <iostream>
#include <cstring>
using namespace std;

int main()

{

	int a = 3.141592;
	float b = 3.141592;

	cout << "int to int : " << (int)a << endl;
	cout << "int to float : " << (float)a << endl;
	cout << "float to int : " << (int)b << endl;
	cout << "float to float : " << (float)b << endl;

	return 0;

}
Lyw님의 프로필 이미지

작성한 질문수

질문하기