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