다음 코드 고려 다음 C++ 표준 [expr.cond]에 따른의 유형 '?'첫 번째 피연산자는 상수 식
void f(float x)
{
x * (true ? 1.f : 0.0);
}
declval(bool) ? declval(float) : declval(double)
유형이다 double
한다.
void f(float x)
{
double(x) * 1.0;
}
또는 경우에 최적화 ?:
의 첫 번째 피연산자는 컴파일 타임 상수 표현 할 수있는 문이 :
'난독 화 된 C++ 콘테스트'에서 온 것입니까? '사실이야? 1.0f : ...'는 항상 1.0f로 평가되지만, 1.0f로 곱하는 것이 맞습니까? –
@ ott-- 그 대답은 질문이 실제로 무엇에 관한 것인지에만 집중할 수있는 방식으로 질문을 표현하는 좋은 방법입니다. 거의 모든 상수는 질문의 요점이 아닐지라도 반올림에 초점을 맞춘 답을 얻습니다. – hvd
표현식은 항상 하나의 유형 만 가질 수 있으므로'something? a : b는 무엇이든 상관없이 항상 같아야합니다. – Xeo