0

プログラミング初心者なので、どなたか教えてください。結果変数の値が正しくないようです。cinandを使用するほうがよいことはわかっていますcoutが、家庭教師から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条件も true と評価されない場合は、初期化されません。常に初期化する必要があります。

さらに、あなたが望んでいるものではないと私が確信しているアドレスを出力&resultするので、渡してはいけません。代わりに渡します。printfresultresult

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

結果を初期化し、printf("%d", &result); を変更します。to printf("%d", 結果);

于 2013-02-26T15:00:38.350 に答える
0

resultvalue が正しく初期化されていない場合、実際にはガベージ値が含まれます。したがって、ガベージ イン - ガベージ アウト!

これも ->printf("%d", &result);あるべきですprintf("%d",result);

于 2013-02-26T14:59:55.393 に答える