比較演算子について

解決


あんこう  2011-04-09 12:11:00  No: 72539  IP: 192.*.*.*

比較演算子は0,1以外の値を返すことがあるのでしょうか?

編集 削除
επιστημη  URL  2011-04-09 14:22:59  No: 72540  IP: 192.*.*.*

C++言語仕様では、「比較演算子の評価値はboolであり、trueまたはfalseを返す」となっています。

なので、「0,1以外の値を返すことがあるのでしょうか?」という問自体ナンセンスってことになります。

こいつ↓をVC++に食わすと 'bool' と出力されます。

#include <iostream>
#include <typeinfo>

using namespace std;

int main() {
  cout << typeid( 2<3 ).name();
}

編集 削除
あんこう  2011-04-09 16:36:53  No: 72541  IP: 192.*.*.*

if文使うのが面倒なので、よくそれを使っているのですが、もし1,0以外のパターンがあると使えなくなるので…

編集 削除
επιστημη  URL  2011-04-09 17:01:41  No: 72542  IP: 192.*.*.*

> if文使うのが面倒なので、よくそれを使っているのですが

「それ」って何ですか?

編集 削除
翔泳ミキオ  2011-04-09 21:51:54  No: 72543  IP: 192.*.*.*

はぁ?

まったく理解してないな。

基礎をやれ。と言ったはずだが。

かなり、アレだ、相当に恥ずかしい質問だぞ。ホント。

以上。

編集 削除
επιστημη  URL  2011-04-09 22:08:18  No: 72544  IP: 192.*.*.*

# 阿呆はほっといて

Cの場合、JIS X3010 によると:

    関係演算子および等価演算子の評価結果は真なら1/偽なら0を返す。
    その結果は型 int をもつ。

とあります。

編集 削除
翔泳ミキオ  2011-04-10 11:11:51  No: 72545  IP: 192.*.*.*

↑知っかぶり君は無視したほうがいい。

イチゼロのイチは何かしることが基礎だ。

イチ=電気のオンを意味する
ゼロ=電気のオフを意味する。
これが、2進数であり、地デジの信号と同じ仕組みだ。
∴  1か0しか返さない。

電球のスイッチをイメージしてみろよ
オンとオフのスイッチが多いだろ?

まぁ、アホはほっといたほうがいいぞ。

オレはマシン(機械)語のマスターチャンピオンなので。あはは

編集 削除
アホはほっといて  2011-04-10 12:18:02  No: 72546  IP: 192.*.*.*

>もし1,0以外のパターンがあると使えなくなるので…
TRUEの場合、1ではなくて-1(すべてのビットがON)を返す言語もあるので
それを心配してるのかな?
0か1かで判定するのではなく、0であるかないかで判定すれば問題ないと思う。

編集 削除
翔泳ミキオ  2011-04-10 15:19:00  No: 72547  IP: 192.*.*.*

質問者君は、基礎をやりなよ。

オレのカキコを妨害してるやつがいるだろ?
なぜか?
1  善意
2  自分の利益

答えは、2だ。

やつらは、自分の入門本の売り上げしか考えてない。
税金は脱税するし、金の亡者だよ。

編集 削除
あんこう  2011-04-10 20:00:13  No: 72548  IP: 192.*.*.*

アホはほっといてさん、ありがとうございます。その通りです。
後、この質問に関しては
bool x=2;
int y=x;
で調査したところ、yは1でした。
ありがとうございました。

編集 削除
仲澤@失業者  2011-04-11 10:16:18  No: 72549  IP: 192.*.*.*

解決しちゃってますが、言語が定義している型は、
その型が求められている場合には、そのまんま使うのが吉ですね。
trueは真偽の「真」なのであって、変換可能ではありますが、
「整数とは本質的に無関係」という割りきりが必要ですね。

編集 削除
翔泳ミキオ  2011-04-11 17:02:52  No: 72550  IP: 192.*.*.*

仲澤@失業者 さん>この質問者は入門レベルですよ。
あまり、関わり合いにならないほうが良いと思います。

宣言とか、そうゆうレベルの話もぜんぜんかみ合わないんですよ。

10年間、初心者らしい。

編集 削除
仲澤@失業者  2011-04-11 18:03:59  No: 72551  IP: 192.*.*.*

まぁ、半分は自分の「筋トレ」目的なのでご容赦くださいm(__)m。

編集 削除
あんこう  2011-04-13 20:06:41  No: 72552  IP: 192.*.*.*

実は、c++の本にFALSEまたはTUREを返すと書いていたのでつい…
できるだけif文を使うことにします。

編集 削除
翔泳ミキオ  2011-04-13 21:06:36  No: 72553  IP: 192.*.*.*

そうゆう問題じゃないんだよ。
整数を使うとか、そうゆう問題なんです。

VBを勉強した経験って、ホントにあるの?

なぜ、知ったかぶりをするのかねぇ。

オレは、オマエがわからんよ。

ほんとうに勉強してみたらどうですかね。

編集 削除
επιστημη  URL  2011-04-17 17:10:59  No: 72554  IP: 192.*.*.*

> できるだけif文を使うことにします。

必ずしも「if文使う」が解決ではないんちゃうかしら。
「いかなる時も 真なら1/偽なら0 であってほしい」
のであれば、

#define F(x) ((x) ? 1 : 0)
あるいは
int F(bool x) { return x ? 1 : 0; }
なんての定義しておいて、
  c = (a == b) * 3 を
  c = F(a == b) * 3 に書き換えれば

if ( a == b ) c = 3; else c = 0; よりなんぼかマシちゃいます?

編集 削除
翔泳ミキオ  2011-04-18 20:37:53  No: 72555  IP: 192.*.*.*

↑ハヤト君>>質問者君は、明らかに、入門道のほんの1歩だけカジッタ程度に思えますけどね。

複数分岐は整数でやれば、8分岐、30分岐も自由である。
将棋や囲碁の思考ルーチンを開発する場合は、キチンとノートに鉛筆で厳密なフロチャートを書く必要がある。

オレを知ったかぶりと思ってるようだが、まぁアレだがな。
ゲーム制作のやつはココは少ないぞ。

質問者君>>コンピューター言語のプロたちは分野がイロイロだ。

業務アプリのプロだは、ゲーム製作は無理。

以上である。

編集 削除
翔泳ミキオ  2011-04-18 22:00:14  No: 72556  IP: 192.*.*.*

はいはい、カンニングマンのミキオ君です(笑)
ほら
今日はC++を13分勉強したよぉ。
#pragma endregion
    //宣言randomNumber(VBと同じ)
    Random^randomNumber;
  private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
         //変数の宣言Number(VBと同じ)
         //これが「!!  変数  !!」です。
         //↓Numberがみえますかね?
int Number;
//インスタンスrandomNumber(VBのnewと同じ)
randomNumber=gcnew Random();
//乱数0から100を生成する(VBと同じ)
Number=randomNumber->Next(101);
//表示
   MessageBox::Show("ランダム(0カラ100を表示)___>>"+Number.ToString());
       }

編集 削除
ベロ  2011-04-19 02:35:59  No: 72557  IP: 192.*.*.*

解決している質問なので別スレッドを
立てれば良いのでは?

編集 削除
翔泳ミキオ  2011-04-19 19:14:51  No: 72558  IP: 192.*.*.*

いや、コイツは、一生涯解決しない君だよ。

だってさぁ、変数も知らないんだから(笑)

な。おまえ。

編集 削除