boolやenumをintで代用する奴は氏んだ方がよい
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG「チミはなんで勝手にboolなぞという型で受け取ってるのかね!これは列挙型だよ!君のせいで修正が大変だ」
とか言われると心底ムカつく。
みんなはどうよ?
0254デフォルトの名無しさん
NGNGおまえはひまわりでも使っとけ
0255デフォルトの名無しさん
NGNG( ´_ゝ`)フーン 一般人にソースコード理解してもらって何が嬉しいの?
0256デフォルトの名無しさん
NGNGif(p) {}
と
if(p!=NLLL){}
と
どっちが判りやすいか、おまえには判るか?
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNGif ( p ) や if ( ! p ) の方が自然と理解できる
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG> if(p) {}
> if(p!=NLLL){}
operator void * () とか
いくつかの cast を overload してたら
意味が同じでなくなるかもね
0262デフォルトの名無しさん
NGNG前者
0263デフォルトの名無しさん
NGNG>>256
後者だよ。
>>261
このスレはスマートポインタの場合なんて考えられない人ばかりみたいだよ。
それよりも NULL は使わずにあらゆるポインタにキャストできて、その値として 0 を返す Null クラスを作ってそれと比較するほうがいい。
0264デフォルトの名無しさん
NGNG>if(p!=NLLL){}
この二つがコンパイルできて、且つ違う意味になるような多重定義をする奴は糞
0265デフォルトの名無しさん
NGNG>const もまともに使えない
どっからこんな話でてきた?オマエの勝手な妄想だろ。この妄想厨が。
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG前者派だが、そんなことは思わんよ。どっちでもいい。
0268デフォルトの名無しさん
NGNGif ( NULL != p )
とか書かないなら、別に気にならない
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGライブラリなんかで
「〜した場合はNULLを返す」
とか説明が書いてある場合は後者
0271デフォルトの名無しさん
NGNG禿同。俺も、整数型について、
if(n)
とかやるけど、
if(strcmp(...))
はやらない。
0272デフォルトの名無しさん
NGNG自分が作った関数の説明をどのように書いているか、興味があるんだけど。
0273デフォルトの名無しさん
NGNG個人でしか使わないが
たいていはoperator bool定義してるから。
void*のほうがいいんだろうけどね。
0274デフォルトの名無しさん
NGNG後者。
NULLは処理系依存。
0275デフォルトの名無しさん
NGNGNULLが全bit0かどうかは処理系依存だけど
if(NULL)は必ず偽になるし、0を代入するとNULLになるのは規定されてる
0276デフォルトの名無しさん
NGNGそれは知らなかった。
サンクス。
0277デフォルトの名無しさん
NGNGやっとわかった'NLLL'を選んだらダメだろ
0278デフォルトの名無しさん
NGNG>NULLが全bit0かどうかは処理系依存だけど
プ
まあそりゃ単なるdefineだから1かも2かもしれん罠。
そんなイタズラは別として、おまえ勘違いしてない?
もしくは勘違いしているのは>>274かも知れない。
ヌルポインターは必ず0ですよ? Cではね。
たいていは
#define NULL 0
だが、古いコンパイラには
#define NULL (void *)0
なんてのもあるかもね。
しかし、
#define NULL 1
などはありえません。
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
0281デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNGそれが言いたかったのか?
0285デフォルトの名無しさん
NGNG何が言いたいの? 知らなかったの? 勉強不足だね(w
0286デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG-0.0のことを言ってるのか?
0290デフォルトの名無しさん
NGNGCのこと
0291デフォルトの名無しさん
NGNG> IEEE754ならそうなるが
そんなこと言ったら、NULL で全ビット "0" になる処理系なんか腐るほどあるぞ。
0292デフォルトの名無しさん
NGNG>そんなこと言ったら、NULL で全ビット "0" になる
紛らわしいからおかしなこと書くな。誤解してる奴も多いし、お前も誤解していると思われるかも。
「ヌルポインターの内部表現」と書けば?
0293デフォルトの名無しさん
NGNGIEEE754のサポート率ってそんなに悪かったっけ?
0294デフォルトの名無しさん
NGNG0.0が全ビット0
-0.0がMSBが1で残りの全ビット0
参考までに
0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG確かにそうだな。
指摘ありがと。
>>293
サポート率がいいからどうしたと言うんだ ?
0297デフォルトの名無しさん
NGNG> サポート率がいいからどうしたと言うんだ ?
IEEE754非準拠のアーキテクチャは稀だから
0.0は全ビット0でほぼ正解だということ
0298デフォルトの名無しさん
NGNG浮動少数をゼロフィルしてたら片手落ちと言うものだろ
0299デフォルトの名無しさん
NGNG> 標準C++にこだわりをもってコーディングしてるのに
すまん >>288 以下では初耳なのだが
0300デフォルトの名無しさん
NGNG「ほぼ」正解って何だよ。
そんなこと言ったら、ヌルポインタの内部表現が全ビット "0" って言うのも「ほぼ正解」じゃないのか ?
>>288 は、「必ず」って言う奴がいたからあげつらってんだよ。
0301デフォルトの名無しさん
NGNG標準C++にこだわりが無いなら
わざわざこんな議論をするまでもなく好きにしたらいいやん
0302デフォルトの名無しさん
NGNG現実劇にはほとんど困らないんじゃねーの?
自己満足的な議論としか思えないんだが。
0303デフォルトの名無しさん
NGNGbasic_string::c_strの領域に書き込んでもいいとか、
ベクタコンテナからT*ポインタを取り出すのにvector<T>::beginを使っていいとか
そういうことになるだろ
0304デフォルトの名無しさん
NGNG> basic_string::c_strの領域に書き込んでもいいとか、
> ベクタコンテナからT*ポインタを取り出すのにvector<T>::beginを使っていいとか
このあたりは、問題の発生する環境を何度も見たが、
今回問題になってるあたりは(一生出会わないくらい)レアなんじゃないのってこと。
実際にゼロでは困る環境を挙げて欲しい。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG互換性は残すと思われる
0308デフォルトの名無しさん
NGNG自己満足的な議論を吹っかけてくんなボケ。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG( ´,_ゝ`)
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG>よほど特別な理由がない限り将来国際規格非準拠の処理系が出るとは思えないのだが
NULLポインタの内部表現を全ビット0にするってのは国際規格になりましたか?
0313デフォルトの名無しさん
NGNGNULLポインタの内部表現は規格以前じゃボケ
0315デフォルトの名無しさん
NGNG大して利益無いから規定されてないものだと思うのだが。
あるとしたらfloatとかポインタとかが詰まってる構造体をmemsetで0埋め出来るぐらいか?
0316デフォルトの名無しさん
NGNGstruct SOMESTRUCT {
UINT cbSize;
... // ポインタ、浮動小数など
};
SOMESTRUCT s = { sizeof(SOMESTRUCT) };
Windowsプログラムだと頻出しないか?
0317デフォルトの名無しさん
NGNGとかね。
0318デフォルトの名無しさん
NGNGおいおい、それは
SOMESTRUCT s = {sizeof(SOMESTRUCT), 0, 0, 0, /* ..... */};
と等価なんじゃないか?
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGなにが 「とかね」 なのかわかんねー
0321デフォルトの名無しさん
NGNG>>317のコードでnullぽいんたの内部表現が分かるって事だろ
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG1.boolやenumをintで代用する奴は氏んだ方がよいと思うスレ
2.Nullポインタとfloatの0.0の内部表現は全ビット0がいいと思うスレ
どっち?
0324デフォルトの名無しさん
NGNG2の補数表現ならそうだろ
0325デフォルトの名無しさん
NGNG2の補数表現だと決まっているのかどうかが問題なのでは?
0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNG直接メモリを弄くって内容を書き換えるのはよくないってことだろ
0328デフォルトの名無しさん
NGNGすげー不便だ。
0329デフォルトの名無しさん
NGNGobjがクラスなら、それは危険だし
古い単純なデータ構造なら
DATA data={0];
obj=data;
これで簡単に0埋めできるよ
0330デフォルトの名無しさん
NGNGいや,0埋めしたとき浮動小数点数が0.0になるとは限らないとかいうから駄目なわけで
0331デフォルトの名無しさん
NGNGA a = {0};
は
A a = {0, 0};
と等価で
A a = {0, 0.0};
と等しくなるから、この場合は問題ない。
0332デフォルトの名無しさん
NGNGtemplate<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デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG参照や const なポインタをもってて、コンストラクタで設定するようなクラスは
どう考えたって0で初期化できないのはわかるだろ?
0335デフォルトの名無しさん
NGNG0で初期化できないだろといっても、
そもそもする必要がないので無問題。
332の template<class T>inline void zeroset(T&o) で
無理矢理したければ、
デフォルトコンストラクターの結果を無理矢理代入するような
スペシャライズをすればいいし
0336デフォルトの名無しさん
NGNGおまいらの関数やクラスは未来永劫使われると思ってるのか?
おまいらのプログラムは今のOSに依存してないのか?
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNGそんなの増えたらヘタレプログラマは職を失う
0340デフォルトの名無しさん
NGNGクラスがoperator=(int)持ってりゃ済むことだろう
0341デフォルトの名無しさん
NGNGわざわざ自分でoperator=(int)を書くくらいなら
はじめから変な初期化機構使わないで
イニシャライザ作るだろ
0342デフォルトの名無しさん
NGNG典型的なCOBOLer様のご発言です。崇めましょう。
0343デフォルトの名無しさん
NGNGのどもと過ぎれば熱さ忘れるか... Y2K
あっ、>>338 の言うとおりなのかな。(藁
0344デフォルトの名無しさん
NGNG二度と顔見せるな
というスレ
0345デフォルトの名無しさん
NGNGそのイニシャライザを使うことと同じ方法で
ファンダメンタルなタイプに対しても初期化ができる?
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNGで何か問題でもあるのか?
0348デフォルトの名無しさん
NGNG基本型にもコンストラクタがあるんだよね。
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNGint i = int(54.28f * 0.999f);
キャストよりコンストラクタの方が美しいな。
0351デフォルトの名無しさん
NGNGそれはコンストラクタのように見えてコンストラクタではない
class A {...};
class B {
...
operator A()const{}
};
A a;
B b;
b=B(a);
この B(a) がコンストラクタではないように
一見コンストラクタに見えてコンストラクタではないこともある。
0352デフォルトの名無しさん
NGNGコピーコンストラクタじゃないのかと(ry
■ このスレッドは過去ログ倉庫に格納されています