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

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

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

みんなはどうよ?
0002デフォルトの名無しさんNGNG
ぬ
0003デフォルトの名無しさんNGNG
る
0004デフォルトの名無しさんNGNG
ぽ...
0005_NGNG
http://homepage.mac.com/hiroyuki45/hankaku05.html
0006デフォルトの名無しさんNGNG
よう分からんが、完全に>>1が悪い。
0007デフォルトの名無しさんNGNG
>>1
>命名規約もドキュメントもなく何型かわかるはずもないのに
プロトタイプ宣言。

0008デフォルトの名無しさんNGNG
MSのことか?
0009デフォルトの名無しさんNGNG
>>1
自分一人で全部やるのでまったく関係のない話だ。
0010デフォルトの名無しさんNGNG
enumをboolで代用しようとした>>1も死んでいいかもよ。
0011デフォルトの名無しさんNGNG
分からないなら聞けば良いじゃないか。
0012デフォルトの名無しさんNGNG
命名規約もドキュメントもなければまず関係者で話し合えよ。
五十歩百歩。
0013デフォルトの名無しさんNGNG
booleanをintでやる奴はしんでほしいとおもうが
enumの場合はどうだろうか。
enum使用禁止言語もあるのだし
0014デフォルトの名無しさんNGNG
どうでもいいよ。

っところで1さぁ〜、昨日アキバに居たよね?テレビの取材受けていたのを見たんだよ。

アナ「今日はあの大人気の声優○○○○さんが来ています。」
1 「えぇ〜、ホントですか?ハァハァ」
アナ「・・・そんなに興奮なさらないでください(笑)。もし会えたら何したいですか?」
1 「えぇ〜っと、まず握手したいですねぇッハァッハァハァ・・・」
アナ「是非あなたに会いたいといっていましたよ。」
1 「ホントですかぁ?」
アナ「それでは呼んできます。目をつぶって待っていてください。」
1 (目をつぶる)
アナ「目を開けてください!!」
1 (目を開けた!!)
アナ「ドッキリ大成功!!!!!!」
1 「えぇ〜、俺をおちょくってんのか?」
(スタッフ登場)
スタッフ「すみません、これはドッキリでして」
1 「嘘つくなんて、怒ったぞぉ」

その後1はアナを犯しまくったとさ
0015デフォルトの名無しさんNGNG
はっきりいってくそすれだとおもう
0016デフォルトの名無しさんNGNG
>>14
最後がワラタ
0017デフォルトの名無しさんNGNG
言わなくてもわかりますよ
0018デフォルトの名無しさんNGNG
なんか夏厨数名がage嵐てるようだな。暇な奴らだ。
0019デフォルトの名無しさんNGNG
>>18
オマエモナー
0020juNGNG
|    ?|\|/  |     |?    |
|?∧?∧??|/⌒ヽ、| ∧_∧?| ∧∧ |
|(,,゚Д゚)| |,,゚ Θ゚) |(; ´Д`)|(=゚ω゚ |
0021 NGNG
|    ?|\|/ |     |?  |
                            |?∧?∧??|/⌒ヽ、| ∧_∧?| ∧∧ |
                            |(,,゚Д゚)||,,゚ Θ゚)|(; ´Д`)|(=゚ω゚)|
0022デフォルトの名無しさんNGNG
>>9は創価学会員
0023デフォルトの名無しさんNGNG
>>1
boolって1bitだろぉぃ。
0024デフォルトの名無しさんNGNG

boolって1bitだろぉぃ。
0025デフォルトの名無しさんNGNG
>>23
夢を見るのは辞めなさい。
0026デフォルトの名無しさんNGNG

boolって1bitだろ土井。
0027デフォルトの名無しさんNGNG
boolってtrueかfalseを表すもんじゃないの?
002823NGNG
>>27
そうだよ、だから電子一粒で判定できる。
すなわち1bit
0029デフォルトの名無しさんNGNG
そうだよ、だから電子一粒で判定できる。
すなわち1bit
0030_NGNG
http://homepage.mac.com/hiroyuki45/
0031本物の23 ◆wjp6F0LD8M NGNG
(´-`).。oO(サイズが1byteあるってことを突っ込みたいのだろうか?)
003223NGNG
二重投稿しちまった・・・
セージしとこ
0033デフォルトの名無しさんNGNG
(´-`).。oO(サイズが1byteあるってことを突っ込みたいのだろうか?)
0034デフォルトの名無しさんNGNG
33 名前:デフォルトの名無しさん 投稿日:03/08/11 20:16
(´-`).。oO(サイズが1byteあるってことを突っ込みたいのだろうか?)
003523NGNG
またやっちまったょ・・・
セージ。。
0036デフォルトの名無しさんNGNG
4Bytesでは?
0037デフォルトの名無しさんNGNG
33 名前:デフォルトの名無しさん 投稿日:03/08/11 20:16
(´-`).。oO(サイズが1byteあるってことを突っ込みたいのだろうか?)
0038デフォルトの名無しさんNGNG
arere?
1bitdattakke?
0039デフォルトの名無しさんNGNG
VCでは4よりバージョンが高いのなら1バイト、低いなら4バイト
gccでは4バイト

後のコンパイラは知らん
0040デフォルトの名無しさんNGNG
>>39
そもそもWin32APIが4Byte
0041デフォルトの名無しさんNGNG
>>40
BOOLのことか?

BOOLは
typedef int BOOL;

よく調べてからいえ、バカ
0042デフォルトの名無しさんNGNG
>>41
そもそもお前の人生が4byteで表せる
0043デフォルトの名無しさんNGNG
>>42
そうだな、ビッグエンディアンで96B391CAってところか。
0044デフォルトの名無しさんNGNG
(´-`).。oO(漏れのペニスのサイズも1byte)
00451NGNG
int client;
client = 1;
if (client) {
}
とか書いてて
int customer;
とか出てきたから
bool isCustomer で受けとったら
customer = CT_ABC;
とかだったんだよ。
命名規約で縛ってるわけでもないし、
ドキュメントもないしもう最悪。
0046デフォルトの名無しさんNGNG
テキストエディタなんか使わずIDEを使っていれば
ちゃんと補完されてバグが未然に防げたのにな。
0047デフォルトの名無しさんNGNG
愚痴ならまいたでやれ
0048デフォルトの名無しさんNGNG
>>32>>35
セージ……???
0049デフォルトの名無しさんNGNG
>>46
IDE厨発見

intって書かれてる時点でIDEに判別できるわけないやん。
ほんとIDE厨ってヴァカヴァッカ
0050デフォルトの名無しさんNGNG
誰か45をわかりやすく説明して。
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
また、ヴァカがでてきたよ...。
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
本物のプログラマはそんな中途半端に冗長な文章なんか書きません。
0253251NGNG
>>252
馬鹿にもわかりやすいようにコード上での表現を日本語にしてあげたんですけど、
それすらも理解できない馬鹿がいるとは驚きを禁じ得ません。
0254デフォルトの名無しさんNGNG
>>253
おまえはひまわりでも使っとけ
0255デフォルトの名無しさんNGNG
>>253
( ´_ゝ`)フーン 一般人にソースコード理解してもらって何が嬉しいの?
0256デフォルトの名無しさんNGNG
>>255
if(p) {}
と
if(p!=NLLL){}
と
どっちが判りやすいか、おまえには判るか?
0257デフォルトの名無しさんNGNG
もちろん前者ですね。
0258デフォルトの名無しさんNGNG
俺も前者だな
0259デフォルトの名無しさんNGNG
ポインタの場合は特に
if ( p ) や if ( ! p ) の方が自然と理解できる
0260デフォルトの名無しさんNGNG
俺は後者だな。
0261デフォルトの名無しさんNGNG
>>256
> if(p) {}
> if(p!=NLLL){}

operator void * () とか
いくつかの cast を overload してたら
意味が同じでなくなるかもね
0262デフォルトの名無しさんNGNG
>>256
前者
0263デフォルトの名無しさんNGNG
const もまともに使えない C 厨房が大量にスレに巣食っているな。

>>256
後者だよ。

>>261
このスレはスマートポインタの場合なんて考えられない人ばかりみたいだよ。
それよりも NULL は使わずにあらゆるポインタにキャストできて、その値として 0 を返す Null クラスを作ってそれと比較するほうがいい。
0264デフォルトの名無しさんNGNG
>if(p) {}
>if(p!=NLLL){}

この二つがコンパイルできて、且つ違う意味になるような多重定義をする奴は糞
0265デフォルトの名無しさんNGNG
>>263
>const もまともに使えない

どっからこんな話でてきた?オマエの勝手な妄想だろ。この妄想厨が。
0266デフォルトの名無しさんNGNG
後者を選択する人はいっぺん医者に見てもらったほうがいいですね。
0267デフォルトの名無しさんNGNG
>>266
前者派だが、そんなことは思わんよ。どっちでもいい。
0268デフォルトの名無しさんNGNG
俺も前者派だが、
 if ( NULL != p )
とか書かないなら、別に気にならない
0269デフォルトの名無しさんNGNG
>>266は、後者選ぶ奴は眼科いけって意味だと思うw
0270デフォルトの名無しさんNGNG
自分で作ったものは前者
ライブラリなんかで
「〜した場合はNULLを返す」
とか説明が書いてある場合は後者
0271デフォルトの名無しさんNGNG
>>270
禿同。俺も、整数型について、
if(n)
とかやるけど、
if(strcmp(...))
はやらない。
0272デフォルトの名無しさんNGNG
>>270
自分が作った関数の説明をどのように書いているか、興味があるんだけど。
0273デフォルトの名無しさんNGNG
>>272
個人でしか使わないが
たいていはoperator bool定義してるから。
void*のほうがいいんだろうけどね。

0274デフォルトの名無しさんNGNG
>>256
後者。
NULLは処理系依存。
0275デフォルトの名無しさんNGNG
>>274
NULLが全bit0かどうかは処理系依存だけど
if(NULL)は必ず偽になるし、0を代入するとNULLになるのは規定されてる
0276デフォルトの名無しさんNGNG
>>275
それは知らなかった。
サンクス。
0277デフォルトの名無しさんNGNG
>>269
やっとわかった'NLLL'を選んだらダメだろ
0278デフォルトの名無しさんNGNG
>>275
>NULLが全bit0かどうかは処理系依存だけど
プ
まあそりゃ単なるdefineだから1かも2かもしれん罠。
そんなイタズラは別として、おまえ勘違いしてない?
もしくは勘違いしているのは>>274かも知れない。
ヌルポインターは必ず0ですよ? Cではね。
たいていは
#define NULL 0
だが、古いコンパイラには
#define NULL (void *)0
なんてのもあるかもね。
しかし、
#define NULL 1
などはありえません。
0279デフォルトの名無しさんNGNG
NULL と「ヌルポインタ」を混同している人がいるような気がします。
0280デフォルトの名無しさんNGNG
>>279
(゚Д゚)ハァ?
0281デフォルトの名無しさんNGNG
NULL と「ヌルポインタ」を同一視できない人がいるような気がします。
0282デフォルトの名無しさんNGNG
>>278
http://www.catnet.ne.jp/kouno/c_faq/c5.html#5
0283デフォルトの名無しさんNGNG
「ヌルポインタ定数」と「ヌルポインタ」を(
0284デフォルトの名無しさんNGNG
>>283
それが言いたかったのか?
0285デフォルトの名無しさんNGNG
>>282
何が言いたいの? 知らなかったの? 勉強不足だね(w
0286デフォルトの名無しさんNGNG
NULLの値 と「ヌルポインタの内部表現」を混同している人がいるような気がします。
0287274NGNG
>>286
正解。
私なわけだが。

逝って来るよ。
0288デフォルトの名無しさんNGNG
そういえば某所に0.0は必ず全ビット0になると言っていたやつがいたな。似たようなものか。
0289デフォルトの名無しさんNGNG
IEEE754ならそうなるが
-0.0のことを言ってるのか?
0290デフォルトの名無しさんNGNG
>>289
Cのこと
0291デフォルトの名無しさんNGNG
>>289
> IEEE754ならそうなるが

そんなこと言ったら、NULL で全ビット "0" になる処理系なんか腐るほどあるぞ。
0292デフォルトの名無しさんNGNG
>>291
>そんなこと言ったら、NULL で全ビット "0" になる

紛らわしいからおかしなこと書くな。誤解してる奴も多いし、お前も誤解していると思われるかも。
「ヌルポインターの内部表現」と書けば?
0293デフォルトの名無しさんNGNG
>>291
IEEE754のサポート率ってそんなに悪かったっけ?
0294デフォルトの名無しさんNGNG
IEEE754の単精度(4bit),倍精度(8bit)浮動小数点数は
0.0が全ビット0
-0.0がMSBが1で残りの全ビット0
参考までに
0295デフォルトの名無しさんNGNG
ヌルポインタの中の人(ry
0296デフォルトの名無しさんNGNG
>>292
確かにそうだな。
指摘ありがと。

>>293
サポート率がいいからどうしたと言うんだ ?
0297デフォルトの名無しさんNGNG
>>296
> サポート率がいいからどうしたと言うんだ ?
IEEE754非準拠のアーキテクチャは稀だから
0.0は全ビット0でほぼ正解だということ
0298デフォルトの名無しさんNGNG
標準C++にこだわりをもってコーディングしてるのに
浮動少数をゼロフィルしてたら片手落ちと言うものだろ
0299デフォルトの名無しさんNGNG
>>298
> 標準C++にこだわりをもってコーディングしてるのに
すまん >>288 以下では初耳なのだが
0300デフォルトの名無しさんNGNG
>>297
「ほぼ」正解って何だよ。

そんなこと言ったら、ヌルポインタの内部表現が全ビット "0" って言うのも「ほぼ正解」じゃないのか ?

>>288 は、「必ず」って言う奴がいたからあげつらってんだよ。
0301デフォルトの名無しさんNGNG
>>299
標準C++にこだわりが無いなら
わざわざこんな議論をするまでもなく好きにしたらいいやん
0302デフォルトの名無しさんNGNG
NULL や 0.0 が全ビットゼロでない環境を使っているやつなんてほんとにいるの?
現実劇にはほとんど困らないんじゃねーの?
自己満足的な議論としか思えないんだが。
0303デフォルトの名無しさんNGNG
そういうことを言い出すと
basic_string::c_strの領域に書き込んでもいいとか、
ベクタコンテナからT*ポインタを取り出すのにvector<T>::beginを使っていいとか
そういうことになるだろ
0304デフォルトの名無しさんNGNG
>>303
> basic_string::c_strの領域に書き込んでもいいとか、
> ベクタコンテナからT*ポインタを取り出すのにvector<T>::beginを使っていいとか
このあたりは、問題の発生する環境を何度も見たが、
今回問題になってるあたりは(一生出会わないくらい)レアなんじゃないのってこと。
実際にゼロでは困る環境を挙げて欲しい。
0305デフォルトの名無しさんNGNG
将来出てくる可能性とか思いつかんのか。オマエはCOBOLerか。
0306デフォルトの名無しさんNGNG
よほど特別な理由がない限り将来国際規格非準拠の処理系が出るとは思えないのだが
0307デフォルトの名無しさんNGNG
将来のハードウェアの進歩によってIEEE754が拡張された規格が出来るとしても
互換性は残すと思われる
0308デフォルトの名無しさんNGNG
じゃあそう思ってていいよ。

自己満足的な議論を吹っかけてくんなボケ。
0309デフォルトの名無しさんNGNG
>>302
0310デフォルトの名無しさんNGNG
>>308
( ´,_ゝ`)
0311デフォルトの名無しさんNGNG
302の時点で自己満足的な議論と結論付けてる奴が議論しようとしてるのでそれを指摘したまでですが何か?
0312デフォルトの名無しさんNGNG
>>306
>よほど特別な理由がない限り将来国際規格非準拠の処理系が出るとは思えないのだが

NULLポインタの内部表現を全ビット0にするってのは国際規格になりましたか?
0313デフォルトの名無しさんNGNG
>>312
NULLポインタの内部表現は規格以前じゃボケ
0314306NGNG
>>311

>>306 = >>307 ≠ >>302
ですが何か?
0315デフォルトの名無しさんNGNG
全bitが0だと完全に仮定してプログラム書くと何か利益あんの?
大して利益無いから規定されてないものだと思うのだが。
あるとしたらfloatとかポインタとかが詰まってる構造体をmemsetで0埋め出来るぐらいか?
0316デフォルトの名無しさんNGNG
>>315
struct SOMESTRUCT {
UINT cbSize;
... // ポインタ、浮動小数など
};
SOMESTRUCT s = { sizeof(SOMESTRUCT) };

Windowsプログラムだと頻出しないか?
0317デフォルトの名無しさんNGNG
printf("%d", (void *)0);
とかね。
0318デフォルトの名無しさんNGNG
>>316
おいおい、それは
SOMESTRUCT s = {sizeof(SOMESTRUCT), 0, 0, 0, /* ..... */};
と等価なんじゃないか?
0319デフォルトの名無しさんNGNG
そういや、整数のゼロは、全ビット0って決まってるの?
0320デフォルトの名無しさんNGNG
>>317
なにが 「とかね」 なのかわかんねー
0321デフォルトの名無しさんNGNG
>>320
>>317のコードでnullぽいんたの内部表現が分かるって事だろ
0322デフォルトの名無しさんNGNG
分かったから何?そんな話になってたか?
0323デフォルトの名無しさんNGNG
ここって何のスレ?
1.boolやenumをintで代用する奴は氏んだ方がよいと思うスレ
2.Nullポインタとfloatの0.0の内部表現は全ビット0がいいと思うスレ
どっち?
0324デフォルトの名無しさんNGNG
>>319
2の補数表現ならそうだろ
0325デフォルトの名無しさんNGNG
>>324
2の補数表現だと決まっているのかどうかが問題なのでは?
0326デフォルトの名無しさんNGNG
1の補数表現でもそうだ
0327デフォルトの名無しさんNGNG
C/C++では数値の内部表現についてまで規定されてないから
直接メモリを弄くって内容を書き換えるのはよくないってことだろ
0328デフォルトの名無しさんNGNG
結局、ゼロ初期化するつもりで memset(&obj, 0, sizeof(obj)) してはいけないってことか。
すげー不便だ。
0329デフォルトの名無しさんNGNG
>>328
objがクラスなら、それは危険だし

古い単純なデータ構造なら
DATA data={0];
obj=data;
これで簡単に0埋めできるよ
0330デフォルトの名無しさんNGNG
>>329
いや,0埋めしたとき浮動小数点数が0.0になるとは限らないとかいうから駄目なわけで
0331デフォルトの名無しさんNGNG
struct A { int i; float f; };
A a = {0};

は

A a = {0, 0};

と等価で

A a = {0, 0.0};

と等しくなるから、この場合は問題ない。
0332デフォルトの名無しさんNGNG
template<class T>inline void zeroset(T&o){o=0;}
template<class T>inline void zeroset(T*p,size_t n){while(n--)zeroset(*p++);}
classの類は特殊化しちゃえばいいし。
配列を楽に初期化したければマクロになるのかな
#define ZEROSET(x) zeroset(x,sizeof(x)/sizeof(x[0]))
double array1[N];
ZEROSET(array1);
anyclass array2[N];
ZEROSET(array2);
このようにして、自分で作った多倍長整数や、任意長浮動小数点数、
どこかで拾ってきたclassやcomplexやvector系など
どんなオブジェクトでも同じ扱いでzero初期化すると愉快か。

しかし、そもそも0という数値そのものが
汎用性の無い特殊なマジックナンバーと考えることもできる。
幾何平均を求めるときは0ではなく1で初期化だし。
0といえば初期化、初期化といえば0という固定概念は褒められたものではない。
何も考えずにとりあえず0を入れておくというのはおかしい。
「必要だから、0という意味のある値を意識的に代入する」
という本質を見失わなければ
memsetでchar(0x00)を埋めるという代用品は却下だろう。
0333デフォルトの名無しさんNGNG
それじゃクラスはゼロで初期化できないだろ
0334デフォルトの名無しさんNGNG
そもそも0で初期化するのが間違い。
参照や const なポインタをもってて、コンストラクタで設定するようなクラスは
どう考えたって0で初期化できないのはわかるだろ?
0335デフォルトの名無しさんNGNG
>>333
0で初期化できないだろといっても、
そもそもする必要がないので無問題。
332の template<class T>inline void zeroset(T&o) で
無理矢理したければ、
デフォルトコンストラクターの結果を無理矢理代入するような
スペシャライズをすればいいし
0336デフォルトの名無しさんNGNG
おめでたい奴らばかりだな。
おまいらの関数やクラスは未来永劫使われると思ってるのか?
おまいらのプログラムは今のOSに依存してないのか?
0337デフォルトの名無しさんNGNG
だったら?
0338デフォルトの名無しさんNGNG
少なくとも>>336の関数やクラスは数か月先すら使えないものばかり
0339デフォルトの名無しさんNGNG
再利用できるコード書くのはほどほどにしとけよ
そんなの増えたらヘタレプログラマは職を失う
0340デフォルトの名無しさんNGNG
>>333
クラスがoperator=(int)持ってりゃ済むことだろう
0341デフォルトの名無しさんNGNG
>>340
わざわざ自分でoperator=(int)を書くくらいなら
はじめから変な初期化機構使わないで
イニシャライザ作るだろ
0342デフォルトの名無しさんNGNG
>>336

典型的なCOBOLer様のご発言です。崇めましょう。
0343デフォルトの名無しさんNGNG
>>336
のどもと過ぎれば熱さ忘れるか... Y2K

あっ、>>338 の言うとおりなのかな。(藁
0344デフォルトの名無しさんNGNG
コボラーは引退しろ
二度と顔見せるな
というスレ
0345デフォルトの名無しさんNGNG
>>341
そのイニシャライザを使うことと同じ方法で
ファンダメンタルなタイプに対しても初期化ができる?
0346デフォルトの名無しさんNGNG
そもそもファンダメンタルなfloatやdoubleが問題なわけだが。
0347デフォルトの名無しさんNGNG
double d = double();
で何か問題でもあるのか?
0348デフォルトの名無しさんNGNG
>>347
基本型にもコンストラクタがあるんだよね。
0349デフォルトの名無しさんNGNG
やはりC最強
0350デフォルトの名無しさんNGNG
int i = (int)(54.28f * 0.999f);
int i = int(54.28f * 0.999f);

キャストよりコンストラクタの方が美しいな。
0351デフォルトの名無しさんNGNG
>>350
それはコンストラクタのように見えてコンストラクタではない

class A {...};
class B {
...
operator A()const{}
};
A a;
B b;
b=B(a);

この B(a) がコンストラクタではないように
一見コンストラクタに見えてコンストラクタではないこともある。
0352デフォルトの名無しさんNGNG
>>351
コピーコンストラクタじゃないのかと(ry
0353デフォルトの名無しさんNGNG
>>352
operator A() はコピーコンストラクタじゃないだろ

ひさびさにアホ登場
0354デフォルトの名無しさんNGNG
>>353
ヘェー
で、どこでoperator A()が使われてるの?

>>350
それはコンストラクタのように見えてコンストラクタではない。
変換関数だったかなんかそんな名前が付いてる。
0355デフォルトの名無しさんNGNG
そもそも>>351のコードは通らんわけだが。
0356デフォルトの名無しさんNGNG
>>354
変換関数ってoperator T()のことじゃないの?
0357デフォルトの名無しさんNGNG
>>350
int i = int(54.28f * 0.999f);
は一時オブジェクト作るから無駄だよね
0358デフォルトの名無しさんNGNG
int i = int(54.28f * 0.999f);
でoperator T()が機能しているとするとすると、
int i(54.28f * 0.999f);
も基本的には同じ仕組みになっているはず。

しかしコンパイラは前者をすんなり通して、後者にだけ暗黙のキャストの警告を出す。
やはり前者は明示的なキャスト(の別表記)と解釈するのが妥当ではないか?
0359デフォルトの名無しさんNGNG
>>358
ファンダメンタルはどのような表記をしても
コピーコンストラクターではなくてキャストと同じ

int i = int(54.28f * 0.999f);
int i(54.28f * 0.999f);

この2つのコードはアセンブラレベルで同じになる
0360デフォルトの名無しさんNGNG
>>359
ユーザー定義型でも保障されてなかったっけ。
0361デフォルトの名無しさんNGNG
同じになるのは
int(54.28f * 0.999f);
(int)(54.28f * 0.999f);
0362デフォルトの名無しさんNGNG
スレタイよく読め
0363デフォルトの名無しさんNGNG
operator T()にもexplicitつけたいと思うこと無い?
たとえば情報が劣化するから明示的に呼び出してもらいたいときとか使えないし。
0364デフォルトの名無しさんNGNG
>>363
名前つきの関数を用意すればいいだろ。
0365デフォルトの名無しさんNGNG
つれないなぁ・・・
templateとかで不便じゃん。
0366デフォルトの名無しさんNGNG
>>363
constructorだけexplicit指定可能ってのは片手落だと思う

標準libraryなど簡単に変更できない位置付けのclassと
それの存在を踏まえた上でのapplicationなclassとの間で型変換をしたいとき
標準library側のclassのconstructorをいじるわけにはいかないから
applicationなclass側で標準library側のclassに対する
変換methodを用意することなるわけだが、
このときexplicit指定できないことによる痛みを実感してしまう

名前付きのmethodにすれば不明瞭さは無くなるが
templateのような場面で汎用性を維持するのが難しくなる
0367デフォルトの名無しさんNGNG
でC#ではキャスト演算子にもexplicitとimplecitが指定できるようになったんだっけ。
C#は奇形児Javaと違ってよいC++の子供だね。
0368デフォルトの名無しさんNGNG
>>367
C#はJavaの子
0369デフォルトの名無しさんNGNG
C#はプラプラの子〜♪
Javaの孫ではないわいな〜♪
それが何より証拠には〜♪
なんでもかんでも取り入れる♪
0370デフォルトの名無しさんNGNG
>>369
それは隔世遺伝というんですよ
0371デフォルトの名無しさんNGNG
畸形ばかりの血統だな
0372デフォルトの名無しさんNGNG
大元のCが美しきBCPLの醜い奇形の子だから。
0373デフォルトの名無しさんNGNG
Cはともかく、C++はブサイク度上がりすぎ
0374デフォルトの名無しさんNGNG
C++ = 肥満児
Java= 無頭児
C# = シャム双生児
0375デフォルトの名無しさんNGNG
>>374
ハム・ソーセージ美味しい!
0376デフォルトの名無しさんNGNG
>375
ハムの人?
0377デフォルトの名無しさんNGNG
とっとこー(パンを買いに)走るよハム太郎〜♪


ハム太郎の中の人も大変だな。
0378デフォルトの名無しさんNGNG
公
太
郎
美
味
し
い
!
0379デフォルトの名無しさんNGNG
>>378
動物虐待でタイーホ!!
0380デフォルトの名無しさんNGNG
食用ならおけじゃなかったっけ?
0381デフォルトの名無しさんNGNG
アセンブラレベルでいえば、ブールもプールも列挙もラッキョもない。
言い返してやれ。
0382デフォルトの名無しさんNGNG
>>381
大前提:高級言語の話をアセンブラレベルで言うな。
0383デフォルトの名無しさんNGNG
烈しく同意
0384デフォルトの名無しさんNGNG
アセンブラにbool型が無いのと、C言語にbool型が無いのは
同じレベルで話せると思うが
0385デフォルトの名無しさんNGNG
boolのあるCPUは作れるし
x86でもキャリーフラグなどはboolと考えてもいいんじゃないか?
あとbit系命令でメモリアクセスもできたはず
0386デフォルトの名無しさんNGNG
>>384
Z80のFレジスタはある意味bool型
0387デフォルトの名無しさんNGNG
>>384
で、_Boolできちゃったのよね。
無いと使い物にならない糞言語だって言われる時代が来たのが明白になったから。
この状況をどう同じレベルで話す?
0388デフォルトの名無しさんNGNG
>>387
そう言ってる奴の頭が使い物にならないだけだろ
0389デフォルトの名無しさんNGNG
でも _True / _False はできてないんだよな。
1 / 0 を使う。
なに考えてんだか。
0390デフォルトの名無しさんNGNG
>>389
C厨の頭に真や偽などという人間の発想に近い概念はない。
あるのはただ0か1かのみなのだ。
0391デフォルトの名無しさんNGNG
論理学の真偽ほど人間の発想から遠いものはないよ
0392デフォルトの名無しさんNGNG
>>391
プログラムに必要な真偽値は論理学の真偽じゃねえ。
そうである か そうでない かだけだ。
そしてそれは 0 と 1 では決してない。
0393デフォルトの名無しさんNGNG
is〜 って形の関数は ! is〜 ってなったときちょっと違和感あるよね
Ruby や Scheme の 〜? の方が自然でいい感じ
0394デフォルトの名無しさんNGNG
>>393
その違和感は慣れでなんとかなりますよ
慣れればいいだけなんですよ
0395デフォルトの名無しさんNGNG
>>393
あらゆる場所で

if (! isFull()) {

って書かれてたソースを見たことがある。しかも、「!」使ってない場所は一つも無し。
当然、「!」を取って、メソッド名を isFoundEmpty に変えて、戻り値のboolean値を反転させた。

そのあと、何で「リファクタリング」にこの作業が紹介されてないのか、子一時間悩んだ。
こっちのほうがわかりやすいのに。

>>394
それは言ってはいけない言葉だと知れ。
0396デフォルトの名無しさんNGNG
>>395
!isFull のが分かりやすい。なんで変えたの。
呼び出す側の都合に合わせすぎると疎結合になる。
0397デフォルトの名無しさんNGNG
>>395
お前は大馬鹿だ。

満タンの逆は空っぽか?
ガソリンスタンドに行ってガソリンの残りが満タンじゃなきゃ
給油してたのを空っぽになってから給油するのか?
ガソリン空なら車は停止してるわ。
0398デフォルトの名無しさんNGNG
if(isFull()) {
 /* 一杯のときは何もしない */
} else {
 ここに処理を書く
}
0399デフォルトの名無しさんNGNG
#define Not !
if(Not isFull())
0400デフォルトの名無しさんNGNG
いや、それも変だろ。冗長。
0401デフォルトの名無しさんNGNG
C++ だと not が使えるよ。

if(not isFull()) { ... }

is not full の順番にならんがな...。
0402デフォルトの名無しさんNGNG
enum って列挙された以外の値も
キャストすれば代入できるよね。

内容の保証まではしてない罠。
0403デフォルトの名無しさんNGNG
>>402
C/C++ はキャストすりゃ何でもアリだからな。
0404デフォルトの名無しさんNGNG
でも、bool (C++ の)へのキャストでは
ちゃんとした bool 値に変換されるよね。
0405デフォルトの名無しさんNGNG
いや、変換されるとは限らんのか?
(bool)1 と (bool)3 が同じ表現を持つと保障する必要性はないのかな?
別に if(b == true) と書いても
if(b != false) のように判定するようなコードを吐けばいいだけだし。

どちらにしろ bool だと特に何も問題が起こらないね。
0406395NGNG
>>396
依存関係は最初によく考えたさ。結合強度が高くなる設計の、
2クラス間でしか使われてないメソッドだった。
にもかかわらず、問い合わせの if(! isFull()) は山ほどあった。
わざわざ>>398や>>399みたいな冗長な書き方したくなっちまう
定義ってのは、つまるところ定義そのものが間違っている。
修正してやる。

>>397
馬鹿はあんた。
isEmptyじゃないぞ。isFoundEmptyだぞ。空なものが見つかった、だぞ。
俺が問い合わせたいのはな、isFullってのはな、「満室か?」ってことだ。
その逆は、「空きが見つかったか?」だ。
「空っぽか?」じゃないんだよ。何得意げな顔して「空っぽか?」、だ。
お前は本当に頭が空っぽなんじゃないかと問いたい。問い詰めたい。
0407デフォルトの名無しさんNGNG
isFoundEmpty じゃ「発見された空かどうか」じゃないの?
0408デフォルトの名無しさんNGNG
>>406
単語より演算子のほうが読みやすいと思うんだが…
0409デフォルトの名無しさんNGNG
>>407
ん?「空っぽいかどうか」じゃないの?
0410デフォルトの名無しさんNGNG
is found empty 空っぽだと判明する。
0411デフォルトの名無しさんNGNG
be + 過去分詞で受動態。
0412395NGNG
A empty room is found.
をJavaちっくに並べ替えたんだよ。
isFoundAEmptyRoom
で、長いから
isFoundEmpty
にしたんだよ。
分かりずらくて悪かったな。直しておくよ。
0413デフォルトの名無しさんNGNG
>>412
hasRoom
0414デフォルトの名無しさんNGNG
isNotFull でいいじゃねぇか。
わざわざ違う単語を使うのは混乱の元だ。
0415デフォルトの名無しさんNGNG
あと、満室じゃないのは
underoccupied って言うんだ。
でも、この単語を日本人がどれだけ知ってる?
こんな単語を使うのは、英語圏の人かただの自己満足だ。
0416デフォルトの名無しさんNGNG
>>415
そんな単語を紹介するのは、頭でっかちの人かただの自己満足だ。
0417402NGNG
>>403
C#もキャストすれば代入可能。(Javaにはenumはないみたい)
0418デフォルトの名無しさんNGNG
Javaでは1.5からEnumクラスが出来るぞ。
列挙は簡単になるし、C/C++,C#とは違って、
クラスのように継承してタイプコードに実装を統合できるのが魅力だ。

今はEnum用途のクラスを自分で定義するしか無いがな……。
イマニミテオレ。
0419デフォルトの名無しさんNGNG
> C/C++,C#とは違って、
C#とは同じ。JavaのEnumクラスはC#のパクリだからね。
0420デフォルトの名無しさんNGNG
>>419
>JavaのEnumクラスはC#のパクリだからね。
0421デフォルトの名無しさんNGNG
Java1.5のEnumで出来る事は既にC#で実現されているね。
0422デフォルトの名無しさんNGNG
C# と Java はお互い猿真似していることは咎めない。
Java がどんどんシンプルじゃなくなっていく。
大丈夫か? 初心を忘れたんじゃないか。

気が付けば MS の狙いどおりか。。。
0423デフォルトの名無しさんNGNG
シンプル伊豆ベストってのは作る側の論理だからねぇ。
Java作る側にとってはJavaがシンプルだと作りやすいけど、
その分使う側が苦労する。
CISCがシンプルだと作る側が作りやすいけど、
その分人間やコンパイラが苦労するのと同じように。
0424デフォルトの名無しさんNGNG
ところでさメモリーのゼロ番地ってどうやってアクセスするのさ?
0425デフォルトの名無しさんNGNG
>>423
んなこたぁない。
0426デフォルトの名無しさんNGNG
>>416
自己満足じゃない!
日本人PGの英語能力の底上げは是非とも必要な事だ!
適切な単語があったらそれを使ったほうがいい!
0427426NGNG
間違えました >>415 へでした。
0428デフォルトの名無しさんNGNG
>>424

(void*)0
0429デフォルトの名無しさんNGNG
>>423
> CISCがシンプルだと

それはすでに CISC じゃねーだろ。
0430デフォルトの名無しさんNGNG
 
0431デフォルトの名無しさんNGNG
既にと言うより
そもそもRISC
0432デフォルトの名無しさんNGNG
(void*)0
は処理系依存ではなかったか?
0433デフォルトの名無しさんNGNG
そもそも0番地というのが処理系に依存してるのだが
0434デフォルトの名無しさんNGNG
(void*)((int*)(sizeof (int)) - 1)
0435デフォルトの名無しさんNGNG
>>431
>>423 が RISC を引き合いに出しているのは誰の目にも明らかだと思うが、主語が CISC なのはおかしいと言ってるだけだろ ?

日本語にしてみな...

「複雑な命令セットを持つコンピュータ (の命令セット) が単純だと作りやすいけど、」
0436デフォルトの名無しさんNGNG
>>424
union{
int *p:
intptr_t i;
};

i=0;
*p=123212321;

intptr_tはポインタと同じサイズの整数型。名前間違ってるかも
0437デフォルトの名無しさんNGNG
(int)0 の内部表現が 0 だというのは
保証されてるんだろうかとか考えることがあるんだけど、
保証されていようがされていまいが、
流石にそうなってない環境なんてないよね? よね?
0438デフォルトの名無しさんNGNG
>>437
> (int)0 の内部表現が 0 だというのは
禿しく意味不明。
(void*)0 の内部表現が int の 0 と同じだと言いたいのか?
そうであれば違うアーキテクチャは山ほど存在した。
0439デフォルトの名無しさんNGNG
>>438
違う違う。
例えば負の数はアーキテクチャによって
表現法が変わることがあるでしょ?
それと同じように、0 や正の数でも
表現法が変わることもあるのかどうかってこと。
0440デフォルトの名無しさんNGNG
>>438
整数0のすべてのビットが0であるかどうかと言う問題ではないか?
0441デフォルトの名無しさんNGNG
>>440
内部表現のすべてのビットが、ね。
C の段階では全てのビットは 0 であるとされる筈。

C の段階でのビット表現と
内部表現のビット表現が同じであるということが
保障されていれば何も問題ないんだけど...。
0442デフォルトの名無しさんNGNG
×保障 → ○保証

MS-IME のバカ...。
0443デフォルトの名無しさんNGNG
整数0は全ビット0 ぬるぽはそうとは限らないけど。
0444デフォルトの名無しさんNGNG
7FFFだろ
0445デフォルトの名無しさんNGNG
・ポインタに整定数0を代入するとNULLポインタになる
・ポインタと整定数0を比較するとNULLポインタとの間でだけ一致する
だろ。「定数」だけ。

あと、
・static変数の定義を省略すると=0を付けたのと同じ
・論理値を必要とするところでポインタを書くと==0と付けたことになる
から、うまいこと省略して書ける。
0446デフォルトの名無しさんNGNG
>>445
> ・論理値を必要とするところでポインタを書くと==0と付けたことになる
> から、うまいこと省略して書ける。
?
0447デフォルトの名無しさんNGNG
>>445
!=0 ?
0448445NGNG
!=0です。失礼しました。
0449デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c5.html

同でも良いが
これ書いた奴ウザ過ぎ
何様のつもりだろうか
0450デフォルトの名無しさんNGNG
要するにぬるぽ
0451デフォルトの名無しさんNGNG
>>449
それ書いた奴はただネット上の意見をまとめただけ
要するにC使い自体が平均的に高飛車なんだよ
0452デフォルトの名無しさんNGNG
FAQに、うざいって文句つけるやつ初めて見た。 ( ゚д゚)ポカーン
0453デフォルトの名無しさんNGNG
intのほうが符号拡張がないから速い
0454デフォルトの名無しさんNGNG
そんなもん、実装定義。
0455デフォルトの名無しさんNGNG
enumって使いづらくないですか?例えばこういうのをコンパイルすると
#include <stdio.h>
int main(void){
enum answer {YES, NO, UNKNOWN};
enum voltage {HIGH, LOW, UNKNOWN};
enum answer mine = YES;
enum voltage input = HIGH;
return 0;
}
0456デフォルトの名無しさんNGNG
% gcc -o enum_test enum_test.c
enum_test.c: In function `main':
enum_test.c:5: conflicting types for `UNKNOWN'
enum_test.c:4: previous declaration of `UNKNOWN'
make: *** [all] Error 1
各enum型変数の持つ値名(なんて呼ぶか分かりませんが)は
プログラムで一つの名前空間なの?
これって困るんですけど。私の使い方が間違っているのかなあ
0457デフォルトの名無しさんNGNG
自分はそれを回避するためにC++でenumを使うときは
構造体(か専用の名前空間)に閉じこめて使ってる。
struct answer { enum Enum{YES , NO , UNKNOWN}; };
struct voltage{ enum Enum{HIGH, LOW, UNKNOWN}; };
とかにしておいて
answer::Enum mine = answer::YES;
voltage::Enum input = voltage::HIGH;
という風に使ってる。(もっとスマートな解決法があるのかもしれんが...)
0458デフォルトの名無しさんNGNG
>>457 namespace
0459デフォルトの名無しさんNGNG
VC買え
0460455,456NGNG
>>457 Thank you!!
>>458 ? namespaceという機能があってそれを使えばstructで
くるまなくても解決できるということ?
>>459 Visual C++だと>>455のコードもcompileできるよ、
という意味ですか?すまん、わからん。でもこんなこと
実装依存な分けないしなあ...
0461458NGNG
>>460
そう
0462デフォルトの名無しさんNGNG
俺は性格的にbool型関数が使えない・・・。
物事を真と偽に割り切れないタイプ。
#define TRUE 0
#define FALSE 1
#define UNKNOWN 2
とした上でint型関数を呼び出す。
0463デフォルトの名無しさんNGNG
>>462
すげークソな定義だな。
0464デフォルトの名無しさんNGNG
VC7.1でも455はコンパイルできないよ。
error C2365: 'UNKNOWN' : 再定義; 以前の定義は '列挙子' でした。
とエラーが出る
0465デフォルトの名無しさんNGNG
>>464
include した .h ファイルを列挙しろや
0466455,456,460NGNG
>>458, >>461 namespaceはC++の機能ですね。gccでもいけるようなので
#include <stdio.h>
namespace language{enum answer {YES, NO, UNKNOWN};};
namespace electricity{enum voltage {HIGH, LOW, UNKNOWN};};
int main(void){
enum language::answer mine = language::YES;
enum electricity::voltage input = electricity::HIGH;
return 0;
};
とやってみました.これで良いんですかね.
gcc -o enum_test enum_test.cppでコンパイル通りました.
何もやってないのでちゃんと動いているかはまだ分かりませんが。
0467デフォルトの名無しさんNGNG
structは関数中で定義できるからな。
0468デフォルトの名無しさんNGNG
>>462
プログラム書くのやめた方がいい。
エラーなら例外を使え。
0469デフォルトの名無しさんNGNG
>>462
せめて、enum にしろよ。

>>468
> エラーなら例外を使え。

というような決め付けをするような頭の固い奴はプログラマーに向いてないよ。
0470デフォルトの名無しさんNGNG
例外は認めません
0471デフォルトの名無しさんNGNG
C99では
falseは0、trueは1って決まったんじゃないの?
0472デフォルトの名無しさんNGNG
false / trueと、FALSE / TRUEは違うものなので。
とはいえ、TRUEが偽というのは気持ち悪い。
0473デフォルトの名無しさんNGNG

[#1] The header <stdbool.h> defines four macros.

[#2] The macro

bool

expands to _Bool.

[#3] The remaining three macros are suitable for use in #if
preprocessing directives. They are

true

which expands to the integer constant 1,

false

which expands to the integer constant 0, and

__bool_true_false_are_defined

which expands to the decimal constant 1.

[#4] Notwithstanding the provisions of 7.1.3, a program is
permitted to undefine and perhaps then redefine the macros
bool, true, and false.200)
0474デフォルトの名無しさんNGNG
スレタイと>>1の意味がよくわからん

bool型がない古い処理系では、typedef intやenumで
代用するのは普通だと思うが
0475デフォルトの名無しさんNGNG
なんで>>1を読んでbool型がないなんて思えるのかわからん
0476デフォルトの名無しさんNGNG
いや、それで>>1とスレタイが全然噛みあってないと思ってるわけだが
0477デフォルトの名無しさんNGNG
マネージド使え
0478デフォルトの名無しさんNGNG
ここはヌルヌルと卑猥なC言語ですね
0479デフォルトの名無しさんNGNG
卑猥なのは貴様だけだっ
  ( ・∀・). | | ガッ
 と    ) | |
   Y /ノ 人
    / ) <  >__Λ∩
  _/し'  . V`Д´)/
 (_フ彡      /←>>478
0480デフォルトの名無しさんNGNG
受け売りだけど、
#define TRUE (1=1)
#define FALSE (!TRUE)
でいいんでない?
0481デフォルトの名無しさんNGNG
#define TRUE 1
#define FALSE 0
に対するメリットを述べてください。
0482デフォルトの名無しさんNGNG
コンパイルエラーになる。
0483デフォルトの名無しさんNGNG
>>480
エラー
0484デフォルトの名無しさんNGNG
>>480
馬鹿の馬鹿による馬鹿のための定義!
0485デフォルトの名無しさんNGNG
>>462
 if (〜)
   :
 else
   :
 otherwise
   :

とかにしろとでも?
0486デフォルトの名無しさんNGNG
いや、UNKNOWN の時は例外を発生すると言うのはどうだろうか。
0487デフォルトの名無しさんNGNG
わたしくi487こと「SXってコプロ無効化してあるだけじゃん…」が>>487をゲット!
0488デフォルトの名無しさんNGNG
>>486
unknown例外を投げる奴は氏んだ方がよい
になるやかん。
0489デフォルトの名無しさんNGNG
ブーリアン!ブーリアン!ブーリアン!ブーリアン!ブーリアン!
きっとあなたは帰ってくるだろう!
0490デフォルトの名無しさんNGNG
unknownって何か変じゃねえ?
nothing蛇内の?
真偽無だろ?
0491デフォルトの名無しさんNGNG
Exceptional C++ 項目45
0492デフォルトの名無しさんNGNG
無は偽なり
0493デフォルトの名無しさんNGNG
>>489
ヒデキ〜!
0494デフォルトの名無しさんNGNG
Rubyは真、偽、無があるけどbool型はなかったな。確か。
0495デフォルトの名無しさんNGNG
TrueClass, FalseClass, NilClass
0496デフォルトの名無しさんNGNG
仏教だと無は真なり
0497デフォルトの名無しさんNGNG
perlは真,偽,undefで、undefは偽扱い。
0498デフォルトの名無しさんNGNG
色即是空
空即是色
0499デフォルトの名無しさんNGNG
未定義と定義してしまった時点で本当の未定義ではないよな。
「無題」という題名の絵が本当に無題なわけではないように。
0500デフォルトの名無しさんNGNG
これはパイプではない。
ttp://perso.wanadoo.fr/wibo/nedry/supinfocom/p2/zoom/strator/magrittebg.htm
0501500NGNG
こっちのほうにしとくんだった。
ttp://www.uwrf.edu/history/prints/magritte-pipe.html
0502デフォルトの名無しさんNGNG
Rubyだとこういうコードって無限ループになるんだよね

i = 25
while i
 puts "逝ってよし!"
 i -= 1
end

変数 i の指すオブジェクトの値が0か否かではなく、オブジェクトが存在するか否かが
判定に使われてるわけで、値が0という整数値をとるオブジェクトは存在するわけで。


>>494
bool型は再定義する必要ないし、もしできたら困るでしょう
0503デフォルトの名無しさんNGNG
>>496
そんなあいまいなもの論理学を取り扱わなければならない
プログラマにとってはごみ以下である。
0504デフォルトの名無しさんNGNG
>>503
>>499
0505デフォルトの名無しさんNGNG
voidからboolへの自動変換をC++に追加するだけじゃないか。
0506デフォルトの名無しさんNGNG
ぼくはintをboolやenumのかわりになんてつかいません
ちゃんとキャストています。
#define true (float)1
#define false (float)0
0507デフォルトの名無しさんNGNG
俺はdoubleだね。
0.0000001 = true
0.0000002 = false
これ最強
0508デフォルトの名無しさんNGNG
すごく使いにくそう。
桁落ちとか誤差伝播の処理を解決するのがめんどくさそう
0509デフォルトの名無しさんNGNG
桁落ちとか誤差伝播ってw
お前はブール型を数値演算の値として利用しているのか?
0510デフォルトの名無しさんNGNG
言っておくが仏教は曖昧じゃないぞ。
無が真である、というのは、命題全体が偽(空)である、
というレトリック。
つーか、他に解釈のしようもないわけだが。
0511デフォルトの名無しさんNGNG
ところでboolをenumで代用する奴はどうなんだ?
typdef enum {
  false,
  true,
} bool;
0512デフォルトの名無しさんNGNG
119 :デフォルトの名無しさん:03/09/17(水) 14:19    New!!
>>117

C言語を使ったことがあるひとなら、
1が真で、それ以外は偽であることを常識として知っているはず。
0513デフォルトの名無しさんNGNG
>>449
どういうところが?
0514デフォルトの名無しさんNGNG
>>512
マヌケだよな。
C言語の常識がすべての常識と勘違いしてそうだw
0515デフォルトの名無しさんNGNG
Cの常識じゃないだろ。
0516デフォルトの名無しさんNGNG
>>514
>1が真で、それ以外は偽であることを常識として知っているはず。
なんてことはC言語でも成り立たないから安心してくれ
0517デフォルトの名無しさんNGNG
たしかに>>1は偽だな
0518デフォルトの名無しさんNGNG
↑夏厨
0519デフォルトの名無しさんNGNG
で、結論は出たのか?
0520デフォルトの名無しさんNGNG
§r.3.6.1 bool is a unique signed integral type. A bool value may be converted to int by promotion: true converts to 1, false converts to 0.
A numeric or pointer value may be implicitly converted to bool. A zero value becomes false; a non zero value becomes true. The relational operators yield bool values.
The C++ Programming Language/Bjarne Stroustrup
0521デフォルトの名無しさんNGNG
恐ろしい。Stroustrup本を買ってから9年も経つ。が、仕事でC++を使い始めたのはついこないだ。おそろしい。
0522マイク ◆yrBrqfF1Ew NGNG
恐ろしいのはあんたの頭だろう。
0523デフォルトの名無しさんNGNG
>>522
つまんねー煽りいれてんじゃね。
0524デフォルトの名無しさんNGNG
恐ろしいのは、
マイク ◆yrBrqfF1Ew
の、ゴミさ加減だろう。
0525デフォルトの名無しさんNGNG
>>521 == >>523-524

つまんねー煽りいれてんじゃね。
0526デフォルトの名無しさんNGNG
>>521 == >>523-524 || >>522
つまんねー煽りいれてんじゃね。
0527デフォルトの名無しさんNGNG
>>525
だからいいから、ゴミ(マイク ◆yrBrqfF1Ew)は書き込むな。

0528デフォルトの名無しさんNGNG
>>527 = 沢山
つまんねー煽りいれてんじゃね。
0529デフォルトの名無しさんNGNG
>>528 = 沢山
だからもうわかったから、ゴミ(マイク ◆yrBrqfF1Ew)は書き込むな。
0530デフォルトの名無しさんNGNG
>>529
だからもうわかったから、つまんねー煽りいれてんじゃね。
0531デフォルトの名無しさんNGNG
>>521
俺もそんな感じ

9年前に本で読んで、趣味でしか使ってなかった「プログラム言語の知識」が
今になって役に立つのは、不思議
0532デフォルトの名無しさんNGNG
>>531
不思議なのはあんたの頭だろう。
0533デフォルトの名無しさんNGNG
unixのシェルスクリプトでは0が真
0534デフォルトの名無しさんNGNG
>>533
EXIT_SUCCESSが0だからしょうがねぇべさ。
#しまった、頭悪そうな発言スレ行きか
0535デフォルトの名無しさんNGNG
>>531よ、>>521は9年間の間にC++の言語仕様に加えられた変更に関して、
自分が知識を持っていないことを懸念しているのだと思うのだが。
0536デフォルトの名無しさんNGNG
正直、あんまり変わってないぞ
templateもthrowも9年前にあった
実際の処理系に実装されていたかどうかはともかく
0537デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/prog/1082154544/l50
■ このスレッドは過去ログ倉庫に格納されています