2013-05-26 3 views
2

두 개의 숫자를 곱하기 위해 다음 코드를 작성했으며 그 결과가 잘못된 것으로 봅니다. 데이터 유형이 값을 올바르게 보유하고 있지 않다고 가정합니다. 그러나 대답은 인쇄가 잘못되었습니다.C에서 숫자 곱하기

#include<stdio.h> 
main() 
{ 
    long int val1,val2; 
    val1=val2=1235; 
    char c = 'y'; 
    switch(c) 
    { 
     case 'y' : printf("%20d",val1*val2); 
      break; 
     default: printf("invalid"); 
      break; 
    } 
    return 0; 
} 

출력 :
17897 // 정답
하지 않은 // 실제로해야 1,525,225

+2

여기에 C++이 표시되지 않습니다. –

+1

사용중인 툴체인에 대해 언급해야합니다. 16 비트 대상인 것 같습니다. –

답변

11

데이터 유형이 올바른 값을 보관 유지되지만 잘못된 지정자를 사용하고 있습니다. long int에 %ld을 사용해야합니다.

printf("%20ld",val1*val2);

는 내가 확인을 두 번하고 일했다.

+0

출력은 1789715428 – Koneri

+0

@ Koneri로 어떤 컴파일러를 사용하고 있습니까? –

+0

네, 그게 효과가 있어요. 고맙습니다. – Koneri