2015-03-13 2 views
1

Я пытаюсь создать простую программу на C, которая добавляет две числовые переменные. Я попытался проверить входы, однако теперь программа не показывает ответ, просто 0.000000000Добавление двух целых переменных и отображение вывода C

#include<stdio.h> 
int input, temp, status, numberOne, numberTwo, ans; 

int main(void){ 

first(); 
second(); 
add(); 
} 


int first(void){ 
    printf("Please enter your number: "); 
    status = scanf("%d", &input); 
    while(status!=1){ 
     while((temp=getchar()) != EOF && temp != '\n'); 
     printf("Invalid input... please enter a number: "); 
     status = scanf("%d", &input); 

    } 
    numberOne = input; 
} 

int second(void){ 
    printf("Please enter your second number: "); 
    status = scanf("%d", &input); 
    while(status!=1){ 
     while((temp=getchar()) != EOF && temp != '\n'); 
     printf("Invalid input... please enter a number: "); 
     status = scanf("%d", &input); 
     } 
    numberTwo = input; 
} 

int add(void){ 
    ans=numberOne+numberTwo; 
    printf("The answer is %f", ans); 
} 

ответ

2

Результат должен быть имеющим формат %d спецификатора вместо %f

printf("The answer is %d", ans); 

Примечания: - Формат %d спецификатор для целых чисел и %f обычно используется используются для поплавка.

В вашем случае вы получаете два входных чисел, используя код ниже:

status = scanf("%d", &input); 

Так %d здесь sigifies, что эти два числа являются целыми числами. Теперь добавление их даст результат как целое число. Следовательно, вы должны использовать% d только для получения результата.

+1

Спасибо, не могу поверить, что я этого не видел! –

2

в соответствии с главой 7.21.6.1, C11 стандарта, пункт 9

Если какой-либо аргумент не правильный тип для соответствующей спецификации преобразования, поведение не определено.

В вашем коде ans имеет тип int. Вы должны использовать спецификатор формата %d, а не %f.

printf("The answer is %f", ans); 

должен быть

printf("The answer is %d", ans); 
1
printf("The answer is %f", ans); 

должен быть

printf("The answer is %d", ans); 

%d является правильным спецификатором формата для печати целого числа, используя неправильный формат спецификатора приводит к непредсказуемому behvaior это то, что вы видите

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