1

明確にするために、実際の文字 a と b ではなく、a と b に入力された数字を出力するプログラムが必要です。
さて、yallの提案に従って改訂されたプログラムは次のとおりです。

int main (int argc, char *argv[])  
{
   int a; /*first number input*/  
   int b; /*second number input*/  

   a = atoi(argv[1]); /*assign to a*/  
   b = atoi(argv[2]); /*assign to b*/  

   if (a < b)  
      printf("%s\n", a < b); /* a is less than b*/  
      else {  
         printf("%s\n", a >= b); /* a is greater than or equal to b*/  
      }  

   if (a == b)  
      printf("%s\n", a == b);  /* a is equal to b*/  
      else {  
         printf("%s\n", a != b); /* a is not equal to b*/  
      }  

   return 0;  
} /* end function main*/  

笑、今私がプログラムを実行すると、私は言われます

8 [main] a 2336 _cygtls::handle_exceptions: 状態のダンプ中にエラーが発生しました   
セグメンテーション違反

それはどういう意味ですか?(あなたが今までに気づいていないなら、私はこのことでかなり絶望的です笑).

4

6 に答える 6

7

printf()ブール式の値を出力するように求めています (常に true と false に対してそれぞれ 1 または 0 に解決されます)。

おそらく、コードを次のようにしたいと思うでしょう:

if (a < b)
     printf("%s\n", "a < b"); /* a is less than b*/
else {
     printf("%s\n", "a >= b"); /* a is greater than or equal to b*/
}

結果を文字列として表示します。

于 2009-02-16T03:49:50.287 に答える
6

この行:

if (a = b)

すべきではないか

if (a == b) 

こっちも一緒:

printf("%d\n", a = b);  /* a is equal to b*/

する必要があります

printf("%d\n", a == b);  /* a is equal to b*/
于 2009-02-16T03:50:26.383 に答える
0

あなたの問題は、整数の代わりに論理式を置き換えようとしていることです。上記のすべて (a > b) ... は true または false に評価されます (b の値を a に割り当てる a = b を除く)。より大きな値を返そうとしている場合は、次のことを行う必要があります。


    printf("%d\n", a > b ? a : b)

これは、a が b より大きい場合は a を出力し、そうでない場合は b を出力します。

編集:あなたが実際に探しているのは、「a> b」などの単語を出力することだと思います。その場合は、それらをprintfに入れます。%d を printf に配置すると、指定された整数値が文字列のその場所に代入されます。

私はあなたが次のことを望んでいると信じています:


    if(a > b)
        printf("a > b\n");
    else
        printf("b >= a\n");

あれは正しいですか?

于 2009-02-16T03:51:48.813 に答える