0

我都是编程新手,所以请帮助我。结果变量似乎没有正确的值。我知道使用它更好cincout但我的导师让我使用printfand scanf

如果我将代码更改为 printf("%d", result); 我会得到:运行时检查失败 #3 - 变量“结果”正在使用而没有被初始化。如果我将代码更改为 scanf("%c", &c); %c 将从第一个 scanf() 获得空白!!!所以我必须这样写 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 konid\n");
    scanf("%d", &n1);
    printf("Lotfan addad Dovom ra vared konid\n");
    scanf("%d", &n2);
    printf("Please choose an operator\n");
    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;
}
4

4 回答 4

4

您并不总是初始化result. 如果您的任何if条件都不为真,那么它将未初始化。您需要确保始终初始化它。

更重要的是,您不能传递&result给,printf因为这将打印result我确定不是您想要的地址。result而是通过。

printf("%d", result);

当你写道:

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

我想你实际上的意思是:

scanf("%c", &c);
于 2013-02-26T14:58:38.640 回答
1

你有:

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

将其更改为:

scanf("%c", &c);

你有:

printf("%d", &result);

将其更改为:

printf("%d", result);
于 2013-02-26T15:00:59.607 回答
0

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

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

于 2013-02-26T14:59:55.393 回答
0

初始化结果并改变 printf("%d", &result); 到 printf("%d", 结果);

于 2013-02-26T15:00:38.350 回答