타입변환#2 질문있습니다.
252
작성한 질문수 13
// [2] 참조 타입 변환
// 특징) 비트열을 재구성하지 않고, '관점'만 바꾸는 것
// 거의 쓸일은 없지만, 포인터 타입 변환도 '참조 타입 변환' 동일한 룰을 따르니까 1석2조로 공부하자
{
int a = 123456789; // 2의 보수
float b = (float&)a; // 부동소수점(지수 + 유효숫자)
cout << b << endl;
}
강의중 나왔던 코드입니다.
float b = (float&)a; 의 문법이 이해가 잘 안됩니다..ㅠㅠ
float타입의 b변수에 왜 float& (<<< 저는 이걸 주소라고 생각하고있습니다.) 형변환을 해서 넘기는지 모르겠습니다.
a를 float주소형태???? 로 변환?? 이게 잘 이해가안됩니다..
저렇게 해서 넘기면 b에는 포인터처럼 주소가 들어있어야 하는게 아닌가요?..
답변 1
1
int a = 참조타입;
을 하면 a에 주소가 들어가는게 아니라 복사가 일어납니다.
(애당초 a는 포인터나 참조값이 아님!!)
마찬가지로 float a는 4바이트 부동소수점이니
float a = 참조타입;을 해도 값이 복사되어 들어갑니다.
0
// [1] 값 타입 변환
// 특징) 의미를 유지하기 위해서, 원본 객체와 다른 비트열 재구성
{
int a = 123456789; // 2의 보수
float b = (float)a; // 부동소수점(지수 + 유효숫자)
cout << b << endl;
}
// [2] 참조 타입 변환
// 특징) 비트열을 재구성하지 않고, '관점'만 바꾸는 것
// 거의 쓸일은 없지만, 포인터 타입 변환도 '참조 타입 변환' 동일한 룰을 따르니까 1석2조로 공부하자
{
int a = 123456789; // 2의 보수
float b = (float&)a; // 부동소수점(지수 + 유효숫자)
cout << b << endl;
b = (int&)a;
cout << b << endl;
}
그렇다면 위에서
int a = 123456789; << 0x075bcd15 인데
(float)a 는 0x075bcd15라는 값을 부동소수점으로도 123456789가 되게끔 바꾸는거고
(float&)a는 0x075bcd15를 유지시킨채 float로 표현을한건가요?
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
559
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
453
1
strcpy() 구현 관련 질문
0
533
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
475
1
클래스 타입의 포인터 질문합니다
0
559
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
503
1
템플릿 특수화 관련 질문
0
389
1
포인터 관련 질문합니다!
0
270
1
Unable to start assembler. Check your settings.
0
848
2
cpu선택
0
548
1
포인터 질문이 있습니다
0
331
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
589
1
iterator 삭제관련
0
415
1
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
0
316
1
15 분 45초 대 질문
0
317
0
스택 프레임 질문합니다!
2
312
1
오른값 참조 in 게임
0
391
0
동적할당 질문이 있습니다
0
457
1
안녕하세요 메모리에 대해 질문드립니다.
0
312
1
함수객체 의 매개변수
0
365
1
복사생성자
0
439
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
430
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
359
1
스택 오버플로우
2
801
1





