이것은 성능에 대해 정말로 걱정하는 것보다 학문적 인 질문입니다. 나는 정말로 흥미 롭다. 필자는 필자의 제한된 프로그래밍 경험을 통해 컴파일러가 단지 절반의 시간 동안 영리하다는 것을 배웠다.캐스팅 값 유형 상수
나는 정적 인 클래스 인 int
이 정의되어 있고 다른 정수로 그 상수를 나눌 필요가있다. 이제, 해당 부서에서 반환 된 float 값이 필요합니다. 그래서 정수로 둘 다 남겨 둘 수는 없습니다. 이제
const int CONSTANTINTEGER = 69;
int integer = 0;
float floatValue = 0f;
for(integer = 0; integer < CONSTANTINTEGER; integer++) {
float floatValue = integer/(float)CONSTANTINTEGER;
//use floatValue for algorithm.....
}
, 내 질문 : 컴파일러는
(float)CONSTANTINTEGER
대신에 일정한 플로트를 만들 똑똑 아니면 부동 매 루프 정수를 캐스팅 하는가?
루프 내에서 변수를 선언하는 것처럼 각 반복을 캐스팅하는 것처럼 보입니다. 루프 내에서 변수를 다시 작성하고 범위를 벗어나는 것처럼 보입니다. 그러나 솔직히 말해서 확실하지 않습니다. –
컴파일 할 수 있습니다. ILSpy에서 컴파일 된 어셈블리를 살펴보십시오. 일리노이를 보면, 그 일을하는 곳을 볼 수 있습니다. – Amy
@Amy : 아니면 캐스트가 아닌 * 어디에서 * 상수이기 때문에. 매번'integer'를'float'으로 캐스팅해야하지만,'CONSTANTINTEGER'는 그렇지 않습니다. 의견에 동의하지 않는 경우 자유롭게 자세한 내용을 적어주십시오. 더 자세히 볼 수 있습니다. –