2014-09-24 3 views
1

제 질문에 꽤 만족 스럽다면 용서 해주십시오. 이것은 여기에 내 첫 질문입니다.Java와 C 사이의 관계가 일치하지 않습니다.

나는 내 마음 속에서 간단한 질문을하고있다. Java 언어는 CC++을 사용하여 구현되었습니다.

내 질문은 C 언어에서

이며, C의 서식 동작은 주어진 데이터 타입에 비해 다른 수식을 사용하는 정의되지 않는다. 우리는 다른 형식 지정자를 사용하여 전화 번호를 인쇄하려면 유사한 개념을 사용하는 경우 자바 반면

int c=10; 
printf("%f",c); // unspecified behaviour 

, 우리는 IllegalFormatConversionExceptoion를 얻을.

예외 세부 사항 : -! 스레드 "기본"java.util.IllegalFormatConversionException에서

예외 : F = java.lang.Integer의는

내 질문은 : -

Java가 C에서 파생 된 이유는 Java와 C의 차이점입니다.

의심의 여지가 있으십니까? 나는 천재들에게 감사 할 것입니다 ...

+5

하지만 질문은 무엇입니까? – juanchopanza

+1

나는 이것을 보는데 더 좋은 방법이라고 생각한다. Java는 예외 처리의 개념이없는 C와 같이 정의되지 않은 동작을 캡쳐하거나 제어하기 위해 예외 처리를 사용한다. –

+0

예, Java에서는 런타임 오류가 발생하지만 C에서는 런타임 오류가 발생합니다. 다른 한편, 최신 C 컴파일러는 잘못된 형식 지정자를 사용할 때 컴파일 타임 경고를 제공합니다. – user3386109

답변

5

printf은 Java에서 C와 동일한 방법으로 영감을 받았지만 완전히 다른 방식으로 작동합니다. 예를 들어 BigDecimal으로 지정하면 C에 BigDecimal이없는 ​​경우에도 인쇄됩니다.

간단히 말해 Java가 C와 비슷하기 때문에 동일한 기본 기능을 사용한다는 의미는 아닙니다. 대부분의 경우 자바는 자신의 구현을 보장합니다.

  • 정의 행동 자바를 사용하는 방법과 일치
  • .
  • 은 모든 OS 플랫폼에서 동일하게 작동합니다. 왜 자바하지만 자바와 C 사이의 차이가

    왜 C

    에서 파생

? 왜 이것이 전혀 다른 점이 있을까요?

다른 예를 들어 보겠습니다. "제조하다"라는 동사는 문자 그대로 사람이 만든 것을 의미하지만 오늘날에도 거의 반대의 의미를가집니다. 한 언어가 다른 언어에서 파생되었다고해서 반드시 같아야한다는 의미는 아닙니다.

+0

당신의 대답은 좋았지 만, 나는 더 명확한 설명을 원합니다. 당신은 그것에 대해 더 구체적이겠습니까! – asad

+1

@asad 명확하고 구체적인 답변을 제공하려면 분명하고 구체적인 질문이 필요합니다. –

+1

그렇다면 구체적인 질문은 ---> C가 어떻게 관리합니까? C 언어는 기본적인 저수준 언어 였으므로 더 적은 functinality를 제공합니다! 하지만 Java는 C와 비교하여 현대적 이었으므로 추측 한 변경 사항을 사용자 정의했습니다! 내가 틀렸다면 언제든지 저를 시정 해주십시오! – asad

0

전통적으로 printf 함수는 형식 지정자가 잘못되었거나 인수가 누락 된 경우 모든 종류의 두통을 일으켰습니다. 따라서 C에서 파생 된 언어, 특히 C++과 Java는 printf 문제를 피하기 위해 특별한 길이가되었습니다.

동시에 C 컴파일러가 개선되어 printf이 작동하는 방식을 이해하고 잘못 사용될 경우 경고를 생성합니다. 따라서 대부분의 경우 (경고를 무시하거나 해제하지 않는 한) printf 문제가 더 이상 존재하지 않습니다.

관련 문제