我正在尝试用C创建一个简单的程序,它添加了两个数字变量。
我试图验证输入,但是现在程序没有显示答案,只需0.000000000
#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);
}
答案 0 :(得分:2)
根据第7.21.6.1章,C11
标准,第9段
如果任何参数不是相应转换规范的正确类型,则行为未定义。
在您的代码中,ans
的类型为int
。您必须使用%d
格式说明符,而不是%f
。
printf("The answer is %f", ans);
应该是
printf("The answer is %d", ans);
答案 1 :(得分:2)
结果应该是%d
格式说明符而不是%f
printf("The answer is %d", ans);
注意: - %d
格式说明符用于整数,%f
通常用于浮点数。
在您的情况下,您使用以下代码获取两个输入整数:
status = scanf("%d", &input);
所以%d
这里指出这两个数字是整数。现在添加它们会将结果作为整数给出。因此,您应该仅使用%d来获得结果。
答案 2 :(得分:1)
printf("The answer is %f", ans);
应该是
printf("The answer is %d", ans);
%d
是打印整数的正确格式说明符,使用错误的格式说明符导致未定义的behvaior就是你所看到的