トップページ⇒tech
537コメント123KB

boolやenumをintで代用する奴は氏んだ方がよい

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
命名規約もドキュメントもなく何型かわかるはずもないのに
「チミはなんで勝手にboolなぞという型で受け取ってるのかね!これは列挙型だよ!君のせいで修正が大変だ」
とか言われると心底ムカつく。

みんなはどうよ?
0152デフォルトの名無しさんNGNG
>>150
同じに聞こえるか? そうか。でも違うんだよ。よく考えてみな。
わからんか、そうか。じゃあ仕方が無いな。
だから、「馬鹿みたい」って言われるんだな。
0153デフォルトの名無しさんNGNG
150が馬鹿みたいだからといって
馬鹿みたいなのが150とは限らない
0154デフォルトの名無しさんNGNG
>>146
誰かがその書き方をバカだと言ったか?
だが、142を読んでそう思ったのなら、146がバカということになるな。
0155146NGNG
>>154
そうか。

>>142は整数型なら
if (XXX == TRUE)
ではなく、
if (XXX)
と書けと言ってるように読めたからね。

まあ、馬鹿なのは否定しないけど。
0156デフォルトの名無しさんNGNG
148と149の言ってることは、理屈的には一緒。でも・・・

a=(b==c);

って場合に、aは0か1しか無い。(0=偽、1=真)

if(d)

って場合は、dが0なら偽、それ以外は真って判定するってことだろ。

これをゴチャゴチャに考えている香具師が大杉ってことなんだよな。
0157デフォルトの名無しさんNGNG
整数型→論理型変換 0は偽 非0は真
論理型→整数型変換 偽は0 真は1
0158デフォルトの名無しさんNGNG
整数型 includes 論理型
0159デフォルトの名無しさんNGNG
論理型 inherits 整数型
0160デフォルトの名無しさんNGNG
論理型 belongs 整数型
0161デフォルトの名無しさんNGNG
Lonly-guy loves 青春.
0162デフォルトの名無しさんNGNG
lonely ?
0163デフォルトの名無しさんNGNG
>>142
>論理形を持ってる言語 (例: Pascal) でも if XXX = TRUE then なんて書くやつはバカ。
>>149
>0以外は「真」で、「真」は1なんだよ。わかる?

上2者の言ってる事が正しい。分からないやつは、Cを使うべきではない。
というか、分からないやつは、ここに来る前に勉強すべき事があるだろ。
0164デフォルトの名無しさんNGNG
Cにおいて真は1だと例外もなしに言い切ってしまえる奴は
ここに来る前に勉強する事があるんじゃないか?
0165デフォルトの名無しさんNGNG
>>164
例外はありませんが、何か?
一連の書き込みを読んでないのか、読んでも理解できない頭なのか・・・
単なる煽り文だけ書いてもむなしいだけだぞ。
0166デフォルトの名無しさんNGNG
enumかずき
0167デフォルトの名無しさんNGNG
>>165
if(2){printf("こっちにくる");}else{printf("こっちにこない");}

何か感想は?
0168デフォルトの名無しさんNGNG
>>167
>>149を読んで理解するか、もう寝てくれ。
0169デフォルトの名無しさんNGNG
>>167
それは「0以外は真」だろう
「真は1」というのは、条件式を数値として評価した場合、
・条件式が真の時 1
・条件式が偽の時 0
になることを言っているんじゃないか
0170169NGNG
すまん。正確には >>126 だ。
0171デフォルトの名無しさんNGNG
0以外は「真」で、「真」は2なんだよ。わかる?
逆も通じるとは限らないのだ。
0172デフォルトの名無しさんNGNG
>>171
日本語おかしいよわかってる?
2は真だが
真は2じゃない。
真は0以外だ。
0173デフォルトの名無しさんNGNG
>0以外は「真」で、「真」は1なんだよ。わかる?

俺にはこれは論理的におかしいとしか思えないのだが



0以外は「真」で、1は「真」なんだよ。わかる?
これならわかるんだけど
0174デフォルトの名無しさんNGNG
>>173
俺には2つめの「真」が太字で赤色に見える
0175デフォルトの名無しさんNGNG
>>173
はぁ、そうか理解できないか。
じゃあ、こう言いなおそう。

0以外は真として解釈される。
真の値は1である。
つまり、0以外は条件式において1として解釈される。

これならオケ?
繰り返すが、真は1で、これ以外の値をとることはありえない。

int a=2;
a = !!a;
さて、aの値は?
0176デフォルトの名無しさんNGNG
booleanのなかった(過去形)Cではこういった不毛な議論が繰り返されるのです。
彼が自演してまで主張していた事はC99やC++では
_Bool(bool)型を整数型に変換するとfalseは0になり、trueは1になる。
と簡単に言い表す事ができます。

でも1は真じゃねーだろ。
0177デフォルトの名無しさんNGNG
問題を整理しよう。以下のように3つの命題を定める。

P:ある変数 x が 0 以外である。
Q:ある変数 x が 1 である。
R:ある変数 x が真である。

P -> R は全員に認められているようだからいいとしよう。
ここで 1 は 0 以外であるから Q -> P は >>126 の解釈に関係なく成り立つ。
なので P -> R を認めると三段論法により Q -> R もなりたつ。

なので問題は R -> Q と R -> P のどちらが妥当かということになる。
>>126 では R -> Q だという話だがどうか。
0178デフォルトの名無しさんNGNG
ごめんなさい、三段ショウロンポウとかわかりません。
0179デフォルトの名無しさんNGNG
ここで R:ある変数 x が真である を

R1:ある変数 x は真と解釈される値である と解釈する派と
R2:ある変数 x は真を返す演算結果の値である と解釈する派

がいるのが混乱の元だろう。

R が R1 なら R1 -> P が妥当だし
R が R2 なら R2 -> Q が妥当だ。
0180デフォルトの名無しさんNGNG
>>177
ここまでの展開で分からないヤシにはそれは理解できん気がする
0181デフォルトの名無しさんNGNG
三段論法とは今の場合
(Q -> P かつ P -> R) ならば Q -> R が成り立つということ
0182デフォルトの名無しさんNGNG
int型の0はconditionとしてはfalseと解釈される。
int型の1はconditionとしてはtrueと解釈される。
int型の2はconditionとしてはtrueと解釈される。
int型の3はconditionとしてはtrueと解釈される。
以下同上

conditionのtrueはint型の値にすると1になる。
conditionのfalseはint型の値にすると0になる。

0も1も真でも偽でもねぇ、おまいらお型付けちゃんと出来てますか?
0183デフォルトの名無しさんNGNG
>>175
0以外は真として解釈される。
つまり、0以外は条件式において真として解釈される。

これならオケですが、なんで途中で変なの入れる訳?
0184デフォルトの名無しさんNGNG
>>175
IsDiffValue関数の場合

>繰り返すが、真は1で、これ以外の値をとることはありえない。

これはうそになるが?
0185デフォルトの名無しさんNGNG
>>183,184

>>175 じゃないが >>179 を見ろ。
君らは R1 の解釈派で >>175 は R2 の解釈派だということ。
0186デフォルトの名無しさんNGNG
つまり、視点が違うだけで、どっちも正しいってことでつか?



じゃあ、Cにおいて偽は0で、真は0以外。は馬鹿みたいじゃないってことでいいでつね
0187デフォルトの名無しさんNGNG
スレタイ忘れたか?
boolをintで代用する奴は氏んだ方がよいってことでいいでつね
0188デフォルトの名無しさんNGNG
>>166


それは、そうと
なんで2時とかの時間帯なのに活発なんだ?
仕事は
?
0189デフォルトの名無しさんNGNG
boolやenumをintで田代する奴は氏んだ方がよい

いやホントに
0190デフォルトの名無しさんNGNG
名言保管
>>166
>>189
0191デフォルトの名無しさんNGNG
>>186
オマエはバカ。
バカはオマエ。
なるほど、どっちも意味は通じるな。じゃあ、それでもいいよ。
0192デフォルトの名無しさんNGNG
>>191はバカ。
>>191はオカマ。
なるほど、どっちも意味は通じるな。じゃあ、それでもいいよ。
0193デフォルトの名無しさんNGNG
おまえの物は俺の物
俺の物は俺の物
0194デフォルトの名無しさんNGNG
>>192
何がそんなに悔しいんだ?
0195デフォルトの名無しさんNGNG
>>194
何がそんなに嬉しいんだ?
0196デフォルトの名無しさんNGNG
しかし規格も変に成り立ったら 1 を返すなんて規定しなきゃいいのにね。(>>126 参照)

素直に、成り立ったら "0 以外" を返す、としとけば問題なかったと思う今日この頃。

どうしても、0, 1 が欲しいときは、(条件式 ? 1 : 0) でいいんだし...。
0197デフォルトの名無しさんNGNG
とにかく、0は偽なんだな。
じゃあいいじゃん。1も含めて0以外を真にしちゃえば。
0198デフォルトの名無しさんNGNG
関係演算子がそうだというだけの話なのに
0199デフォルトの名無しさんNGNG
おまえら氏んだほうがいいよ。
0200デフォルトの名無しさんNGNG
200(σ^▽^)σゲッツ!!
0201デフォルトの名無しさんNGNG
163だが。

>>173
わざわざ語順を入れ替えてる>>149の言っている事がなぜ伝わらないんだ?

>>175
あんたが正しい。C的には。
>>176
あんたも正しい。おっしゃる通りだ。
>>186
視点の問題じゃないぞ。>>149、>>175、>>176をよく読め。視点と言うより、
BOOL以外の値をBOOLで「解釈」しなければならない時の話、と言えばいいだろうか?
0202デフォルトの名無しさんNGNG
Cにおいて偽は0で、真は0以外。
関係式、等価式、論理式では型はintで偽は0で真は1。
0203デフォルトの名無しさんNGNG
boolなんてきもくて使えない。
0204デフォルトの名無しさんNGNG
BOOL以外の値をBOOLで解釈するな
0205デフォルトの名無しさんNGNG
でも1は真じゃねーだろ。
0206デフォルトの名無しさんNGNG
1を評価すれば真になる
0207デフォルトの名無しさんNGNG
>>202
だから、なぜわざとひねくれた言い方をするのだ?
0は偽で、0以外は真。これでいいだろう。わざわざ逆の言い方するな。
だから頭悪ーって言われるんだよ。
0208デフォルトの名無しさんNGNG
ぶっちゃけどっちでもいいよ

ぶっちゃけ全員氏んだ方がいいよ
0209デフォルトの名無しさんNGNG
>>208だけ氏んだほうがいいと思う。
0210デフォルトの名無しさんNGNG
ま、とにかく1を真と解釈してもいいからさ、条件式の比較で1と比較さえしなきゃいいのよ。Cにおいては。
0211デフォルトの名無しさんNGNG
if ( 0 == i == 1 )
{
 printf( "i は 0です\n");
}
0212デフォルトの名無しさんNGNG
boolをつかおう
0213デフォルトの名無しさんNGNG
もっとboolを使おう
0214M$NGNG
#define TRUE 1
0215デフォルトの名無しさんNGNG
#define blur bool
0216デフォルトの名無しさんNGNG
みんな vector<bool> はどうしてる?

おれは ちょっといやだなあと思いつつも 使っちゃうけど。
0217デフォルトの名無しさんNGNG
>>214
やめろばか
0218デフォルトの名無しさんNGNG
>>216
std::bitset
0219デフォルトの名無しさんNGNG
>>218
可変長じゃないと ダメぽ。
0220デフォルトの名無しさんNGNG
boostにdynamic_bitsetってカンジの名前の動的なbitsetがあると聞いた気がする
0221デフォルトの名無しさんNGNG
>>217
なんか困るのか?
0222デフォルトの名無しさんNGNG
>>221
vector<bool>はSTLではない。

てかそれくらい自分で作れよ。
0223デフォルトの名無しさんNGNG
結局、0以外の数は1ってことですか?
0224デフォルトの名無しさんNGNG
>>222
何いってんの?
0225デフォルトの名無しさんNGNG
>>210
if (1== (hoge==fuga))
0226222NGNG
>>224
ゴメン、当たり前すぎて
わざわざ言う事じゃなかったよね。
0227デフォルトの名無しさんNGNG
>>222
それが
#define TRUE 1
と何の関係が?
0228デフォルトの名無しさんNGNG
>>216
vector<bool>はSTLではない。

てかそれくらい自分で作れよ。
0229デフォルトの名無しさんNGNG
>>228
vector<bool>もないようなショボイ環境使ってんじゃねーよ
0230デフォルトの名無しさんNGNG
このスレの名言
************************************************







vector<bool>はSTLではない。







                             by >>222
************************************************
0231228NGNG
>>229
ハァ?きみオツム足りないの?

>>230
ゴメン、当たり前すぎて
わざわざ言う事じゃなかったよね。
0232デフォルトの名無しさんNGNG
>>231
早く>>227に対して回答しろ
0233デフォルトの名無しさんNGNG
vector<bool>をいちいち自作する奴は馬鹿
0234228NGNG
vector<bool>はSTLではないなんて当たり前すぎるよね。
何?
プログラミング言語C++第三版のP531 16.3.11に載ってるvector<bool>は何かって?
そんなのBjarne Stroustrupが勝手に言ってるだけだろ。
俺がvector<bool>はSTLではないって言ったら、vector<bool>はSTLでは無いんだよ。
分かったか知障ども。
0235デフォルトの名無しさんNGNG
vector<bool>は仮にSTLでなくても標準で定義されているわけで、
いちいち自作するのは馬鹿。
0236228(本物)NGNG
>>234
こういう事(詐称)する人って本当にいるんですね。正直怖いしキショい。
もうレス番号つけて書き込みません。
0237デフォルトの名無しさんNGNG
そういうことか。やっと納得した。<vector<bool>
0238デフォルトの名無しさんNGNG
流行ってるのかこの話題?

C++は難しすぎ 難易度:2
http://pc2.2ch.net/test/read.cgi/tech/1063323615/l50
0239デフォルトの名無しさんNGNG
std::vector<bool>なんて糞なクラス使わずにboost::dynamic_bitset使え。
0240デフォルトの名無しさんNGNG
>>239
できるだけ標準を使いたいわ
0241デフォルトの名無しさんNGNG
boost も準標準だと思うが
0242デフォルトの名無しさんNGNG
>>241
標準と準標準は大違い
0243デフォルトの名無しさんNGNG
サポートされていない標準に意味はあるのでしょうか?
0244デフォルトの名無しさんNGNG
結局省略を認めると認識に間違い(?)ができやすいからオレは好きじゃない。
if(a==TRUE)は正直ありだとも思うが、まあ互換性を考えたらやめたほうがいいんだろうな。

上のほうでif(2)は真だからドウのと書いてあるがこれも結局
if( 2 != FALSE ) なだけで、結果真(1)が返るからif構文の中が実行されるのである。
if( 2 == TRUE ) じゃ実行されないからTRUEを比較に使うのはよろしくないな。やっぱ(ワラ
0245デフォルトの名無しさんNGNG
bool型で != false を省略するのはいいが、
他の整数型やポインタでやらないで欲しい。

「もし 顧客情報ポインタ なら処理する。」
「もし 在庫数 なら処理する。」

日本語だったら、こんな風に書くやついないだろ?
0246デフォルトの名無しさんNGNG
日本語じゃないからな。
0247デフォルトの名無しさんNGNG
自然言語では冗長さや言葉足らずがあるからな
0248デフォルトの名無しさんNGNG
>>245 ダサ
0249デフォルトの名無しさんNGNG
>>248
そうです。省略するのはダサいのです。
0250デフォルトの名無しさんNGNG
>>249
あれは省略ではなく
むしろ付ける方が蛇足というものなんだが
0251デフォルトの名無しさんNGNG
>>250
つまり本物のプログラマは通を気取るために
「もし在庫数でないならば出荷処理する。」
「もし顧客情報ならば顧客情報を表示する。」
とわざと一般人にはわからないように表現するという事ですね?
0252デフォルトの名無しさんNGNG
本物のプログラマはそんな中途半端に冗長な文章なんか書きません。
■ このスレッドは過去ログ倉庫に格納されています