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

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

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

みんなはどうよ?
0051デフォルトの名無しさんNGNG
>>50
int を bool の代わりに使ってるようだったので
似たような int 型の変数が出てきた時 bool だろうと思って
bool に保存したら実は enum 変数だった。
かな?
0052デフォルトの名無しさんNGNG
>>51
って事は>>1は単純にアホって事じゃん。
0053デフォルトの名無しさんNGNG
アホな職場に入っちゃったアホな1が悪い。
0054デフォルトの名無しさんNGNG
アホはアホを呼ぶ。
0055デフォルトの名無しさんNGNG
>>1のアナはアホ
0056デフォルトの名無しさんNGNG
>>54に呼ばれてやってきました
0057デフォルトの名無しさんNGNG
呼んだ?
0058デフォルトの名無しさんNGNG
intをboolやenumで代用する奴は氏んだ方がよい
0059デフォルトの名無しさんNGNG
>>41
だからBOOLじゃなくてboolだってば
0060デフォルトの名無しさんNGNG
>>58
ちょっと君、詳しく話聴かせてもらおうか?
0061デフォルトの名無しさんNGNG
ブーリアンとハンガリアンとエンディアンの中で最強なのは誰ですか?
0062デフォルトの名無しさんNGNG
先住民の奇術。
0063デフォルトの名無しさんNGNG
40 名前:デフォルトの名無しさんsage 投稿日:03/08/11 21:42
>>39
そもそもWin32APIが4Byte


( ´,_ゝ`) プッ
0064デフォルトの名無しさんNGNG
そもそも田村正和が4Byte
0065デフォルトの名無しさんNGNG
bool型のtrueが常に1だと思ってるバカがバグを出す。
006623NGNG
>>65
1bitだから常に0か1だろぉぃ。
0067デフォルトの名無しさんNGNG
C++のbool型なら、true==1が常に成り立つ。
まぁbool型を比較するような奴がバグを出すのは確かだな。
0068デフォルトの名無しさんNGNG
>>67
defineじゃないの?
0069デフォルトの名無しさんNGNG
>>68 は?
0070デフォルトの名無しさんNGNG
>>66
boolは1bitじゃなくて1byteでつ。
007170NGNG
と思ったが内部は1bit扱いなのか?
sizeof(bool)が1を返すから1byteかと思ったが、1と0以外代入
できないんだね。今知った。
0072デフォルトの名無しさんNGNG
>>71
1bitずつアドレス振ってるわけがないんだし、処理効率を考えても
わざわざ1bit扱いにしているとは、とてもぢゃ無いが考えられん。

昔の機械みたいにメモリ節約にこだわって、1byte内にいろんなフラグを混ぜるとかしてないだろ。

こうやって考えると、intサイズで扱ってると考えるのが自然だと思うぞ。
0073デフォルトの名無しさんNGNG
既出だがboolとenumのサイズは処理系依存
0074デフォルトの名無しさんNGNG
enumはそうだが、boolは違うだろ。
0075デフォルトの名無しさんNGNG
39 名前:デフォルトの名無しさん[sage] 投稿日:03/08/11 21:24
VCでは4よりバージョンが高いのなら1バイト、低いなら4バイト
gccでは4バイト

後のコンパイラは知らん
0076デフォルトの名無しさんNGNG
sizeof(bool)が1を返してしまったうちのgcc (GCC) 3.2は逝ってよしですか?
0077デフォルトの名無しさんNGNG
sizeof(enum Foo) != sizeof(int) の処理系って実在する?
0078デフォルトの名無しさんNGNG
gcc -fshort-enums
007977NGNG
Thanks.
しね>おれ
0080デフォルトの名無しさんNGNG
>>48

sageのことだろ。
0081デフォルトの名無しさんNGNG
スカボローフェア
0082デフォルトの名無しさんNGNG
ぱせり、せーじ、ろーずまりー、たいむ
0083山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0084デフォルトの名無しさんNGNG
_Bool は何バイト?
0085デフォルトの名無しさんNGNG
1bit
0086デフォルトの名無しさんNGNG
sizeof(_Bool)は何バイト?
0087デフォルトの名無しさんNGNG
>>86
規定では「0と1を格納できれば十分なサイズ」としか
書かれてないから処理系依存だと思う。

0088デフォルトの名無しさんNGNG
>>86
sizeof(_Bool)=size_tはほとんどの環境でintかunsingned intだろうな。
0089デフォルトの名無しさんNGNG
じゃあ
#define bool _Bool
はうまく働かない場面もあるわけだ…
0090デフォルトの名無しさんNGNG
>>89
なんで?
C++ の bool のサイズも実装依存よ。
0091デフォルトの名無しさんNGNG
>>89
そんなわけない。
#include <stdbool.h>
のことを考えれ。
0092デフォルトの名無しさんNGNG
>>91
なかでintで宣言されてたら爆笑だけどな。
0093デフォルトの名無しさんNGNG
論理型のサイズを気にする必要って何?
いまどき論理型に整数型が代入できる言語を使う必要って何?
0094デフォルトの名無しさんNGNG
>>93
bool a = (bool)1;

C++、使いやすいから。
0095デフォルトの名無しさんNGNG
>>93
>論理型のサイズを気にする必要って何?
このクラス4(or 8 or 16...)バイトに収まるといいなっていう時に
sizeof(bool) == 4が成立すると男泣きに泣ける

>いまどき論理型に整数型が代入できる言語を使う必要って何?
論理型に整数型が代入できる必要はないけど
(少なくとも漏れの仕事/興味の分野では)C++に置き換わる言語がない
0096どこに書いていいか困ったのでNGNG
た、高木ブーリアン
0097デフォルトの名無しさんNGNG
typedef enum{
  HOGE_1 = 1,
  HOGE_2 = 2,
  HOGE_3 = 3,
  HOGE_4 = 4
}HOGE;
0098デフォルトの名無しさんNGNG
>>95
ビットフィールド使えばいいんじゃ?
0099デフォルトの名無しさんNGNG
>>98
あと一個boolをって場合にビットフィールド使ってint級のサイズじゃ役にたたんじゃろ。
アラインメント厳しい環境じゃ同じだろうけど。
というか typedef unsigned char OctalBool; でもいい気がするが。
0100デフォルトの名無しさんNGNG
ほしゅ
0101デフォルトの名無しさんNGNG
ほしゅ
0102デフォルトの名無しさんNGNG
ほしゅ
0103デフォルトの名無しさんNGNG
ほしゅ
0104デフォルトの名無しさんNGNG
かくしん
0105デフォルトの名無しさんNGNG
ぎねん
0106デフォルトの名無しさんNGNG
じゆうみんしゅ
0107デフォルトの名無しさんNGNG
みんしゅ じゆう
0108デフォルトの名無しさんNGNG
ああもうイライラする。booleanが1ビットとか1バイトとか、そんなん
関係無いだろう!何を勉強してきたんだおまいら。
bool型は trueか falseの2値しかないの!
この2値を、どういう実装で内部表現するかは、処理系依存なの!
1ビットか32ビットか、1か全ビット1か、そんな事は高級言語で
プログラミングしている場合は、言語処理系によって隠蔽されてるんだよ!

boolをenumとかintで代用したり、あまつさえ強制キャストしてるようなやつは
逝ってくれ!
0109デフォルトの名無しさんNGNG
>>1==>>108
必死だな。
>boolをenumとかintで代用したり
boolやenumをintで代用だろ。

0110デフォルトの名無しさんNGNG
C言語ははたして高級言語か否か?
0111デフォルトの名無しさんNGNG
じゃあ中級
0112デフォルトの名無しさんNGNG
高級でもあり低級でもある。
つまりrangeが広いわけですな、と。
0113デフォルトの名無しさんNGNG
boolはtrue,falseの2つの値しか取らないが、
実際のメモリ領域は1バイト使っているという罠
0114デフォルトの名無しさんNGNG
本物のプログラマはboolなんて使わない
あらゆるデータ型はintかその配列で表現できる
0115デフォルトの名無しさんNGNG
本物のプログラマにはなりたくないですね。
0116デフォルトの名無しさんNGNG
文字列とかfloat型までそうするのはキモイ
0117デフォルトの名無しさんNGNG
キモイというか、ただのアホ。まあ>>114は明らかに釣りなんだけど。
少なくともパソコンに限ってなら浮動小数点ユニット内蔵してるわけだし。
でもね、bool使える環境なら使うのが当然だよ。
intで返す関数は、0が真なのか0以外が真なのかとか、エラーは0なのか-1なのかとか
使うたびに調べなきゃならないでしょ。
boolならtrueが真、falseが偽って決まってるからね。
0118デフォルトの名無しさんNGNG
高級言語でメモリ占有量を考える必要がない言語でなぜ整数に
char, short, int, long, long longなど多様な型があるのか?
float, doubleもしかり。
0119デフォルトの名無しさんNGNG
>>117

C言語を使ったことがあるひとなら、
1が真で、それ以外は偽であることを常識として知っているはず。
0120デフォルトの名無しさんNGNG
>>119
1が真であるとは定義されていないとオモタが??
0121 NGNG
>>118
お金持ち対象の高級車にいろんな車があるのはなぜか?
「一番良いの」が一個あればいいじゃん?ってことか?
0122デフォルトの名無しさんNGNG
メモリ占有量を考えてハァハァしる!!
「俺はいま80byteメモリーを節約してるぅぅぅぅぅうぅぅぅぅ!!」


ハァハァ♥
0123デフォルトの名無しさんNGNG
>>119
>C言語を使ったことがあるひとなら、
>1が真で、それ以外は偽であることを常識として知っているはず。
age
0124デフォルトの名無しさんNGNG
>>121
あぁ。沢山ある意味はなく、
見栄とか気分で変えるとかそういうことか。
0125デフォルトの名無しさんNGNG
ばかだなあ。
もじれつでだいようすれば、
trueかfalseかなんて、あたいをみれば
いちもくりょうぜんじゃないか
0126デフォルトの名無しさんNGNG
『プログラミング言語C第2版(訳書訂正版)』によるとこのような記述がある。

A7.9関係演算子(P254)
演算子(略)はすべて、指定された関係が成り立たなければ、答えとして0を出し、正しければ1を出す。結果の型はintであり(後略)

0127デフォルトの名無しさんNGNG
へー。

漏れの中では

0 - false
!0 - true

なんだが、これはどこから来たルールだろ?

あとCにかぎらなければ BASIC は -1(全ビット立ってる)が true だったりするよな。
あと C++ だと結果の型は int ではなく bool になる。
C++ で条件式の結果の型として int に拘る必要性は 0 だよな。
0128デフォルトの名無しさんNGNG
おまえら入門書からやり直せ
0129デフォルトの名無しさんNGNG
>>127
> BASIC は -1(全ビット立ってる)が true だったりするよな。

ASCII Code で Delete が 0x7F になった理由が思い浮かんだ。
0130デフォルトの名無しさんNGNG
>>114 >>118
そういう人は、アセンプラを使うべし。
わざわざC言語や他の高級言語が存在する意義を分かっていない/分かりたくないならばね。
多様な型は、C++風に言うなら、多様なクラスであるわけよ。
int a=1;
int b=2;
int c;
c=a+b;
において、intはクラスであり、+や=演算子は intクラスで使用出来るメソッドだと
考えるわけだ。intでなくても、floatや、あるいは charなど、いろいろな型に
ついて、「使える」クラスが言語に内包されている、それが高級言語なのよ。
0131デフォルトの名無しさんNGNG
またC++厨を装うJava厨が出た。
日本人を装う在日のように後を絶たないな。
0132デフォルトの名無しさんNGNG
今月のCマガの特集の両方でこのスレの主題に被る話やってますな。
0133デフォルトの名無しさんNGNG
Cにおいて偽は0で、真は0以外。
関係式、等価式、論理式では型はintで偽は0で真は1。
0134デフォルトの名無しさんNGNG
C++にはboolがあるからintで真偽を表すなよ
0135デフォルトの名無しさんNGNG
>>133
ちなみに、NULLポインタは0だから、ポインタも同じことが言える。
Cはうまく出来てるよな。

  char *p = malloc(1024);
  if( p ) {
     ‥‥
0136デフォルトの名無しさんNGNG
まだ、>>133 とか >>135 みたいに言ってる奴いるのか...。

>>126 みてないのか ?

「真なら 1」 で、「0 以外を真と解釈する」だけのことだろ。

たぶん表現力がないということだと思うけど、いつまでも「真は0以外」とか言ってるとバカみたいだぞ。

ついでに、「NULLポインタは0」もいろいろ物議をかもし出すから、止めとけ。
0137デフォルトの名無しさんNGNG
>>136
演算子は、だろ?
0138デフォルトの名無しさんNGNG
NULLと0の同一視イクナイ!
0139デフォルトの名無しさんNGNG
NULLを0とか言ってるやつは、COBOLのHIGHVALUEとかLOWVALUEから勉強し直せ。
0140デフォルトの名無しさんNGNG
>>137
演算子以外で論理値を返すやつってなんかある ?
isxxx() が怪しいんだが、ググルと 真/偽 を返すと書いてある奴と 0/0以外を返すと書いてある奴の二通りがある。
規格ではどっちが正しいんだ ?

>>138-139
ほらぁ、もう何匹も寄って来ちゃったジャン。 > >>135
0141デフォルトの名無しさんNGNG
http://www.cmagazine.jp/src/kinjite/c/coding.html

ここのif(XXX == TRUE) の部分の記事を読んでどう思うか聞きたい
0142デフォルトの名無しさんNGNG
>>141
論理形を持ってる言語 (例: Pascal) でも if XXX = TRUE then なんて書くやつはバカ。
単にソース上無駄な (=みづらい) だけだからな。
(でもこっちの方が意図が明確に伝わるとか言う奴がいるんだよな...。俺には理解できんが。)

だから、XXX がホントに TRUE/FALSE しか返さないとしても if(XXX == TRUE) なんて書くやつはバカ。
XXX が整数値を返すと知ってて if(XXX == TRUE) とかく奴は、プログラマに向いてない。

C 言語で、TRUE/FALSE に 1/0 以外を定義してる奴は、今すぐ死んだほうがいい。
0143デフォルトの名無しさんNGNG
>>142
MSにも言ってやってくれ
0144デフォルトの名無しさんNGNG
>>141
IsDiffValue なんていう意味が取りやすい変数名を使ってるにもかかわらず、
TRUEと比較するのはなんでだろ
0145デフォルトの名無しさんNGNG
>>143
ん ?
MS のソースにそういうの (= if(xxx == TRUE)) がいっぱいあるのか ?
できたら、その情報ソースを教えてくれ。

>>144
「IsDiffValueの戻り値は」と書いてあるのもかかわらず、
変数と思っているのはなんでだろ
0146デフォルトの名無しさんNGNG
if (XXX != 0)を使うけどね。
見づらくてバカですか。そうですか。
0147デフォルトの名無しさんNGNG
XXX が整数値ならそれでいいだろ。
0148デフォルトの名無しさんNGNG
>Cにおいて偽は0で、真は0以外。

これの何が馬鹿みたいなんだ?
0149デフォルトの名無しさんNGNG
>>148
0以外は「真」で、「真」は1なんだよ。わかる?
逆も通じるとは限らないのだ。
0150デフォルトの名無しさんNGNG
>>148,149
おまいら、言ってることは最終的に一緒なんだからべつにどっちでもいいだろ。
0151デフォルトの名無しさんNGNG
また、ヴァカがでてきたよ...。
■ このスレッドは過去ログ倉庫に格納されています