-4

これは私がCで書いていた簡単なプログラムです

#include <stdio.h>

int main(void){
  int i, j, k;
  i = 2; j = 3;

  k = i * j == 6;
  printf("%d", k);
}

したがって、このプログラムが実際に行っていることはわかっています。変数の 2 つの値がここに示されています。ここでは、計算を行い、計算された値を特定の条件に対してチェックします。

今ここに私が得ていないものがありますプログラムが実行されると、指定された条件が満たされた場合は値1が返され、そうでない場合は0が返されます.1はtrueを表し、oはfalseを表していることを知っていますが、つまり、プログラムには、条件として0または1を出力するように指示するものは何もないということです。一部の C コンパイラでは、その値を返すのがデフォルトですか、それともポイントがありません。

4

3 に答える 3

3

プログラムには、条件として 0 または 1 を出力するよう指示するものは何もありません。

はい、印刷kして、比較の結果を k に割り当てました。これらはすべて同等です( と を考えるi = 2j = 3):

k = i * j == 6;
k = (i * j == 6);
k = (6 == 6);
k = 1;

次に、それを印刷します。

printf("%d", k); // Prints 1
于 2013-08-30T15:53:28.777 に答える
1

ご自身でおっしゃったように、C の論理式は 0 (偽) または 1 (真) に評価されます。それはまさに、条件が満たされているかどうかに応じて、0または変数に1入れるように「指示」するものです。k

今、あなたはあなたのプログラムが「返す」ものについて話しているようです。ここでの「返品」の意味がわかりません。おそらくプログラムの終了コード?関数にはステートメントが含まれていませmainreturn。つまり、C89/90 ではその戻り値は予測できませんが、C99 では戻り値が保証され0ます。から単に「ガベージ」を返す C89/90 コンパイラを使用していると思われますがmain、これはたまたまk.

于 2013-08-30T16:01:08.827 に答える