下記の問題の答えをお教えください
正しい説明を全て選びなさい.
ただし,文中の「条件式」とは,関係演算子(==, >, !=など)や論理演算子(&&, ||, !)を用いた式のこととする.
1. 条件式が真のとき,その評価値は必ず1である
2. 条件式が真のとき,その評価値は0以外の任意の整数である
3. 条件式が偽のとき,その評価値は必ず0である
4. 条件式が偽のとき,その評価値は1以外の任意の整数である
5. C言語で「真」を表す整数値は,1のみである
6. C言語で「真」を表す整数値は,0以外のすべての整数である
7. C言語で「偽」を表す整数値は,0のみである
8. C言語で「偽」を表す整数値は,1以外のすべての整数である
評価値,整数値
Re: 評価値,整数値
他の質問に付いている回答に対して、適切にレスしてくださいね。解決したとかしてないとか。ここがまだわからんとか。
答えもらいっぱなしじゃダメですよ。掲示板っていうメディアはそういうところですから。
1.処理系に依存し、必ず1とは言い切れない。
2.正しい。
3.正しい。
4.誤り。
5.1以外の整数でもよい。
6.正しい。
7.正しい。
8.誤り。
答えもらいっぱなしじゃダメですよ。掲示板っていうメディアはそういうところですから。
1.処理系に依存し、必ず1とは言い切れない。
2.正しい。
3.正しい。
4.誤り。
5.1以外の整数でもよい。
6.正しい。
7.正しい。
8.誤り。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 評価値,整数値
確かに、少なくともこれは間違いですね。
ここでの「条件式」の定義は
となっており、すなわち「指定の演算子が使われている」というだけですね。
したがって、例えば も(==演算子が使われているので)「条件式」であり、真とみなせますが、
その評価値は整数ではありません。
これは間違っているか微妙ですね。
例えば、0.0 や、(void*)0 なども偽となります。
これが「0」に含まれるかどうか、という日本語の解釈の問題が発生します。
これも間違いの可能性が高そうです。
1になるかどうかは実際の式に依存し、処理系に依存する式であれば処理系に依存しますが、
全ての場合において処理系に依存するかは怪しそうです。
これはどこが間違っていて嘘だという主張ですか?その根拠は何ですか?
もしboxさんによる問題の答えが間違っていて嘘だというのであれば、どうしてそれがわかったのですか?
答えがわかっているのにわからないような感じで質問をした、ということではないですか?
(とはいえ、答えがわかっている質問をするのは別にフォーラムルールで禁止というわけではないようですが…)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 評価値,整数値
ごめんなさい、間違えました。
5~8の説明においては「C言語で」と書かれているのに対し、1~4の説明では「C言語で」的なことは書かれていません。
また、この質問の他の部分にも「C言語」という条件はありません。
したがって、1~4の説明については、C言語以外も考えるのが自然だと考えられます。
実際、例えばJavaScriptでは、条件式 1 == 2 の評価値は false となり、これは0でも整数でもありません。
よって、
実際、このコード
を実行すると、実行結果は
となり、偽である条件式の評価値が0でも整数でもない場合があることを確かめることができます。
Number.isInteger() - JavaScript | MDN
5~8の説明においては「C言語で」と書かれているのに対し、1~4の説明では「C言語で」的なことは書かれていません。
また、この質問の他の部分にも「C言語」という条件はありません。
したがって、1~4の説明については、C言語以外も考えるのが自然だと考えられます。
実際、例えばJavaScriptでは、条件式 1 == 2 の評価値は false となり、これは0でも整数でもありません。
よって、
は、「間違っているか微妙」ではなく、間違いだと確定できます。
実際、このコード
console.log(1 == 2); // 1 == 2 の評価値
console.log((1 == 2) === 0); // 1 == 2 の評価値は 0 か?
console.log(Number.isInteger(1 == 2)); // 1 == 2 の評価値は整数か?
if (1 == 2) { // 1 == 2 は真か?
console.log("1 == 2 is true");
} else {
console.log("1 == 2 is false");
}
Number.isInteger() - JavaScript | MDN
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)