2015-06-09 1 views
0

Ниже приведена часть кода, который я пишу для домашнего задания в классе EEL4834. Это просто для практики, а не для класса.Программа C рассматривает утверждение if как ложное, если оно действительно истинно

Моя проблема заключается в том, что компилятор обрабатывает мою инструкцию if как ложную, когда она истинна. Я считаю, что это правда, потому что я проверяю оператор, печатая значение моей переменной в инструкции else, а значение, которое печатается для моей переменной, - это значение, которое я запрашиваю в инструкции if.

Код ...

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    char a, b, c, d, box; 
    float box1; 

    printf("\nPlease enter the box type as a, b, c, or d: "); 
    scanf("\n%c", &box); 

    if (box == a){ 
     box1 = .05; 
     printf("%f", box1); 
     } 
    else{ 
     printf("\n%c\n", box); 
     } 

    system("pause"); 
    return 0; 
} 

Результат выглядит примерно так ...

Please enter a box type as a, b, c, or d: a 

a 
Press any key to continue . . . 

Выход говорит мне, что коробка на самом деле, но если окно является то почему компилятор не считает утверждение if истинным? Я пропустил инструкции if, которые включают опции для b, c или d для простоты.

Прошу прощения, если это что-то глупое. Я попытался использовать поисковую систему, и что-то интересное выглядело намного сложнее, чем моя проблема. Заранее благодарю за любую помощь.

+0

Всегда определяйте свои переменные, даже с нулем/0. 'char a = 'a', b = 'b', c = 'c', d = 'd', box = 0; float box1 = 0; ' –

ответ

3
if (box == a){ 

сравнивает переменную box с переменной a (которое не определено).

Вы должны, вероятно, сравнить его с характером:

if (box == 'a') { 

Это также означает, что вы можете избавиться от переменных a, b, c и d, так как они не используются для чего:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    char box; 
    float box1; 

    printf("\nPlease enter the box type as a, b, c, or d: "); 
    scanf("\n%c", &box); 

    if (box == 'a') { 
     box1 = .05; 
     printf ("%f", box1); 
    } else { 
     printf("\n%c\n", box); 
    } 

    system("pause"); 
    return 0; 
} 
1

Вы сравниваете переменную с именем a, а не буквенный символ 'a'.

Чтобы понять, что я имею в виду, посмотрите учебник как this one

Смежные вопросы