C :

2010-03-20 3 views
1

나는 상황 (UNIX) 다음과 같은 한 두 개의 긴 정수 (매우 이상)을 비교 : C :

x is a long and has value 300 
y is a long and has value 50000 

if (x <= y) printf("Correct."); 
if (x > y) printf("Ouch."); 

지금 난 항상 "아야"를 얻는다. 즉, 프로그램에서 300이 50000보다 큽니다. 내가

if ((int)x <=(int) y) printf("Correct."); 
if ((int)x > (int)y) printf("Ouch."); 

을 수행 할 때 그것은 단지 다시 작동

그래서 비교 연산자 어떤 문제가 있습니까?

+3

x와 y가 어떻게 선언되고 지정 되나요? – freespace

+2

또한 printf ("% ld % ld", x, y) 값을 볼 수 있도록 printf –

+1

"long"은 2 바이트 값이므로 음수가 넘치고 음수가 나오기 때문에 sizeof (long)은 플랫폼에 따라 다르기 때문에 예상 한 값일 수는 없습니다. 특히 당신이 임베디드 플랫폼을 목표로 삼고 있다면. –

답변

1

오류를 발견했습니다. sscanf (... % ld) 대신 sscanf (... % d)를 사용하고 있습니다. : 힌트를 보내 주신 모든 분들께 감사드립니다.