Что не так с этим правильным условием? :) - PullRequest
0 голосов
/ 02 марта 2012

Я нахожу это очень странным.Насколько я могу сказать, в этом утверждении нет ничего плохого, но при его выполнении оно всегда оценивается как ложное, независимо от того, какое число я ввожу.

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). Я думаю, это должно вернуть true, если вы, например, введете 3, так как это больше 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");
}

При печати переменной temp возвращается значение выше 50, даже если я ввожу 3. Как это может быть?:)

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

Следующая тестовая программа:

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

печатает "да". Так что ... да, ваше понимание состояния верно, и, очевидно, одно из ваших других предположений неверно.

1 голос
/ 02 марта 2012

getchar возвращает int, но это число представляет код символа. scanf Вам подходит больше, я думаю, или вы должны конвертировать char, полученный из getchar, в int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...