添加两个整数变量并显示输出C.

时间:2015-03-13 09:59:06

标签: c printf undefined-behavior format-specifiers

我正在尝试用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);
}

3 个答案:

答案 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就是你所看到的