if并与==进行比较

if and comparing with ==

本文关键字:比较 if 并与      更新时间:2023-10-16

我都是编程新手,所以请帮帮我。结果变量似乎没有正确的值。我知道最好使用cincout,但我的导师要求我使用printfscanf

如果我将代码更改为printf("%d",结果(;我会得到:运行时检查失败#3-变量"result"在未初始化的情况下被使用。如果我将代码更改为scanf("%c",&c(;%c将从第一次扫描中获得空白((!!!所以我必须这样写scanf("%c%*c",&c(;或者通过这种方式scanf("%c",&c(;。与%d或%f相比,%c似乎没有跳过空白。

#include<stdio.h>
#include<conio.h>
int main    ()
{
    int n1, n2;
    int result; 
    char c;
    printf("Lotfan addad aval ra vared konidn");
    scanf("%d", &n1);
    printf("Lotfan addad Dovom ra vared konidn");
    scanf("%d", &n2);
    printf("Please choose an operatorn");
    scanf("%c%*c", &c);
    if (c=='+')
    {
        result=n1+n2;
    }
    else if (c=='-')
    {
        result=n1-n2;
    }
    else if (c=='*')
    {
        result=n1*n2;
    }
    else if (c=='/')
    {
        result=n1/n2;
    }
    //else 
    //{
        //printf("error");
    //}
    //printf("%d%c%d=%d" ,n1,c,n2,&result);
    printf("%d", &result);
    getch();
    return 0;
}

您并不总是初始化result。如果您的if条件中没有一个评估为true,那么它将被取消初始化。你需要确保你总是初始化它。

更重要的是,你不能将&result传递给printf,因为这将打印result的地址,我相信这不是你想要的。改为传递result

printf("%d", result);

当你写道:

scanf("%c%*c", &c);

我想你的意思是:

scanf("%c", &c);

您有:

scanf("%c%*c", &c);

更改为:

scanf("%c", &c);

你有:

printf("%d", &result);

更改为:

printf("%d", result);

result值在未正确初始化时实际上包含垃圾值。因此,垃圾进垃圾出!

这个->printf("%d", &result);应该是printf("%d",result);

初始化结果并更改printf("%d",&result(;打印f("%d",结果(;