2016-09-16 2 views
0

타입 안전성에 대해 알고있는 것을 토대로, 타입 안전 언어는 명시 적 변환을 수행하지 않는 한 한 유형의 변수를 다른 유형의 변수에 할당하는 것을 허용하지 않습니다. 그러나 CC++에 나는 다음을 수행 할 수 있습니다float에 int를 할당 할 수있는 경우 (또는 그 반대의 경우) 유형 안전하지 않습니까?

int i = 12345; 
float f = i; // this is allowed 

안전 입력 할 생각이 작업인가?

+0

변환이 금지되어있는 것은 아닙니다. 여전히 암묵적인 전환이 허용됩니다. – songyuanyao

+0

C 및 C++에서 허용됩니다. 원하는 단어를 사용하여 설명하십시오. –

+2

C++에서는 중괄호를 사용하여 암시 적 변환을 피할 수 있습니다. –

답변

1

[..] 유형 안전 언어는 사용자가 명시 적 변환을 수행하지 않는 한 다른 유형의 변수에 한 유형의 변수를 지정할 수 없도록합니다.

나는 이것이 좋은 정의라고 생각하지 않습니다. 오히려 형식 안전 언어는 다른 유형의 값 Y에 대해 수행 할 특정 유형의 작업 (예 : X)이 일부 메트릭에서 호환되지 않는 것으로 간주되는 경우 허용되지 않는다고 말하고 싶습니다. 그것은 강력한 타이핑 (정적 타이핑과 혼동해서는 안 됨)으로 알려져 있습니다.

이 작업은 유형 안전하지 않은 것으로 간주됩니까?

한 유형에서 다른 유형으로 잘 정의 된 (암시 적 임에도 불구하고) 변환입니다.

당신이이 전환이 암시 적이며 명시 적이 지 않은 부분이라고 생각하는 것 같습니다. 나는 언어가 암시 적 변환을 허용한다는 것을 설명하기 위해 뚜렷한 "용어"/ 단어를 모른다.

즉, C++은 모든면에서 유형 안전이 확실하지 않습니다.

관련 문제