#include <iostream>
int main(void) {
float(a);
a = 10.1f;
std::cout << int(a);
return 0;
}
이런경우에 각각의 float(a)와 int(a)가 형변환인지 변수선언인지 어떻게 구분하나요? 괄호속의 인자가 이미 선언된 변수인지 검증해보는 방법밖에 없나요?
#include <iostream>
int main(void) {
float(a);
a = 10.1f;
std::cout << int(a);
return 0;
}
이런경우에 각각의 float(a)와 int(a)가 형변환인지 변수선언인지 어떻게 구분하나요? 괄호속의 인자가 이미 선언된 변수인지 검증해보는 방법밖에 없나요?
표현식이 올자리에 저렇게 오면 캐스팅
희안하게 쓰네. 그리고 c++ 에서는 형변환시 static cast를 쓰도록
제가 저렇게 쓰겠다는게 아니라 그 어떤 경우도 파싱을 해야하기때문에..
문장구조에서 표현식이 올 자리면 무조건 캐스팅으로 받고 나머진 선언문으로 보면 될거같은데
?? 저거 형변환임? C에서 형변환은 (type)Var 이런식아냐? 변수선언같은데 저건
ㅇㅇ//희안->희한 (국어사전 - 희한하다 [형용사] : 매우 드물거나 신기하다.) [리듬 맞춤법 봇♬]
C++에서는 저러한 형식의 형변환도 허용해줍니다. C에서:
http://codepad.org/dzXPfpUn
C++에서:
http://codepad.org/8ryypbNn
표현식으로 구분하면 될거같음 캐스팅은 rvalue니까
ㅇㅎ 저게되는구나
표현식이 올 자리를 어떻게 구분해줘야할까요..
문장구조 분석자체가 필요함?
연산자나 함수적용의 대상이 될때 표현식
그 변수에서 = 오른쪽이면 표현식이고 왼쪽이거나 = 없으면 선언으로 보면 문제없을거같은데
객체를 생성자로 만들듯이 빌트인타입도 같은 표기법으로 만들 수 있게 해 준거다 그래야 template 만들때 편하니까 객체인지 빌트인인지 구분 안해도 되고