2012-03-02 2 views
0

나는 이것을 매우 이상하게 생각한다. 이 말은 아무 것도 말할 수 없지만,이 문장을 실행할 때 내가 입력 한 숫자에 관계없이 항상 false로 평가됩니다. 이 올바른 상태는 무엇이 문제입니까? :)

if(temp>=1 && temp<=5) 

temp

내가 단지 1 ~ 5 사이의 숫자가 될하고자하는 정수입니다. 그래서 문장의 전반부는 if(temp is equal to or greater then one AND if temp is less then or equal to 5).으로 읽습니다. 예를 들어 3을 입력하면 true를 반환한다고 생각합니다. 그 이유는 1보다 크고 5보다 작기 때문입니다.하지만 그렇지 않습니다. 내가 뭘 놓치고 있니? :)

편집 완전한 루프 :

int temp; 
int arrayStorlek=0; 
int tempBytesIndex[5]; 

    for(;;){ 
    temp=getchar(); 
    if(temp=='n' || temp=='N'){ 
     printf("Du är nöjd"); 
     beraknaHand(kortHand); 
     } 
    else{ 
     printf("Hära \n%i\n ", temp); 
     system("pause"); 
     if(isdigit(temp)){ 
      if(temp<=5 && temp>=1){ 
       printf("temp är större än 0 och mindre än 5"); 
       tempBytesIndex[i++] = temp-'0'; 
       arrayStorlek++; 
       } 
      else 
       printf("du måste ange ett intervall mellan 1-5"); 
       } 
     else if (temp=='\n' || temp==EOF){ 
      printf("Slut på inlästa filer"); 
       system("pause"); 
       break; 
       } 
     else 
      printf("\n Du får bara ange siffror, eller ange N om du är nöjd"); 
} 

나는 3. 방법이 될 수 있습니다 입력하더라도 50 위의 값을 반환 변수 temp 인쇄? :)

+2

나에게 잘 보입니다. 이것을 사용하여 몇 가지 예제 코드를 게시하십시오! –

+2

매달린 세미콜론이 있습니다. – pmg

+3

printf ("% d \ n", 임시)를 추가하십시오. 온도가 어떤 가치인지 생각해보십시오. 하나의 가능성은 숫자 3 대신 문자 "3"이 포함되어 있다는 것입니다. –

답변

1

getchar 반환 값 int, 그러나 그 숫자는 문자의 코드를 나타냅니다. scanf 당신이 더 잘 어울리는다고 생각합니다. 그렇지 않으면 getchar에서 가져온 char을 int로 변환해야합니다.

+0

for-loop 바로 위에 변수 temp를 int로 선언했습니다. 그것은 문자로 선언 된 경우 매우 놀랄 것입니다 :) –

+0

지금 나는 그것을보고, 내가 getchar 잘못을 사용하고 대답을 편집 해요 – Alecs

+0

고마워. getChar은 ascii reprentation을 반환 했으므로 조건을 if (temp <=53 && temp> = 49)로 편집하여 이제는 작동합니다. 감사! :) –

3

다음 테스트 프로그램 :

#include <stdio.h> 
int main() { 
    int temp = 3; 
    if(temp>=1 && temp<=5) { printf("yes"); } 
    else { printf("no"); } 
} 

인쇄 "예". 그래서 ... 네, 상태에 대한 당신의 이해가 정확하고 틀림없이 당신의 다른 가정 중 하나는 거짓입니다.

관련 문제