2010-12-14 2 views
2

나는 00.0 (int와 double)의 차이에 대해 잘 알고 있습니다.C++ : 0과 0.0 사이의 차이?

그러나 0.0.0 사이에는 어떤 차이가 있습니까? 사전에

고마워,

악셀은

+0

의미 상의 차이는 없습니다 (음, 소스 코드에 한 개의 추가 바이트 차이가 있습니다 : p). 그러나 약간과 관련하여 +0.0과 -0.0 사이에 차이가 있습니다. 재미있어! –

답변

6

차이는 없습니다. 두 리터럴은 두 배입니다. 은 C++에서 - 문법 :

fractional-constant: 
    digit-sequenceopt . digit-sequence 
    digit-sequence . 

참조 : Hyperlinked C++ BNF Grammar

+0

정말요? 이상하다. Howcome cout << typeid (0) .name() << ""<< typeid (0.0) .name(); "i d"가 인쇄됩니까? –

+5

'typeid (0)'<- 이것은 * int *입니다. '.' 세 번째 코드 줄 끝에. –

+0

그것을 놓쳤습니다. 고맙습니다. –

1

아니, 없다.

+0

예 있습니다. cout << typeid (0) .name() << ""<< typeid (0.0) .name(); (downvote 제거, 내가 올바른 경우 나중에 downvote 것이다) –

+3

'typeid (0) .name()'은 (는) 소수점 이하 자리 표시가 없음을 나타냅니다. 'cout << typeid (0.) .name() << ""<< typeid (0.0) .name();'을 시도해 보면 동일하다는 것을 알 수 있습니다. – AgentConundrum

1

아니요. 알고있는 한 .0까지 작성할 수 있습니다.

-2

0는 int 타입이지만 두 배로 주조 및 0.0 유형의 이중하지만 int로 주조 할 수있다 할 수있다.
두 캐스트 모두 내재적입니다.

+0

질문에 '0'이 명시 적으로 묻습니다. 심지어 "주의하십시오."라고 말합니다. –

+0

실종. 고맙습니다. –

1

숫자의 일부로 .을 사용하면 부동 소수점 유형으로 식별됩니다.

이 :

cout << (5/2) << endl; 
cout << (5./2) << endl; 
cout << (5.0/2) << endl; 

인쇄이 :

2 
2.5 
2.5 

당신은 5.5.0 반면 모두 부동으로 확인 얻을, 첫 번째 줄 (두 값이 모두 정수이기 때문에) 정수 나누기를 사용하고 있음을 알 수 있습니다 포인트 유형을 사용하여 "정상적인 분할"을 트리거합니다.