1 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:54:00.55 ID:0DW9z0rL.net] ※前スレ C++相談室 part153 https://mevius.5ch.net/test/read.cgi/tech/1602339500/ テンプレここまで
381 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:43:15.04 ID:fCVb5Gn/.net] >>370 そのためにinlineとconstexprが用意されてるわけだが なぜマクロで作らなければならないんだ? どこぞのOS屋がmaxなんてクソマクロ作ってたせいで みんな迷惑してたよな
382 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 16:45:04.61 ID:+XHxoAeu.net] >>372 ファイルスコープで予約されている名前とローカル変数で名前がかぶっても 単にシャドウされるだけなので衝突しない。 ローカル変数名として使うべきでないという理由にならない。
383 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:51:19.01 ID:ZnRwde8F.net] >>370 [補足] マクロ引数が二重に評価されてしまうのを防ぐため、マクロ作者が 気を利かせたつもりで次のようなマクロを書いたとする: #define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } 作者の意図としては、 char *ptr1, *ptr2; b(*ptr1++, *ptr2++); のような場合にも正しく動作するようにしたいということで、 この場合は、*ptr1++, *ptr2++ は、それぞれ1回ずつ評価されるので、 ptr1, ptr2 は、それぞれ 1ずつ前に進むので、アプリ作者の意図を 組むことが出来る。 一方、使う側が命名規約に従わず、アプリのローカル変数で_x,_yを定義し、 int _x=1; int _y=2; b(_y,_x); とすると、このマクロは誤動作し、 int x=1; int y=2; b(y,x); と書いたときと結果が変わってくる。
384 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:55:15.98 ID:wwbd/Qx2.net] こういうクソしょーもない話って馬鹿でも理解できるから盛り上がるよね
385 名前:デフォルトの名無しさん [2021/01/31(日) 16:57:55.61 ID:ZnRwde8F.net] >>375 まあ、そうなんだけども、多分、英語の意味をそのまま素直に汲み取れば、 単純に>>372 の意味のはず。 またそれは>>376 のような状況を防ぐことが出来る。 >>374 まあ実際それはそういうこともあることは有るが、マクロでしか書けないような 例もあるわけで、>>376 のようなマクロ作者のせっかくの配慮が、命名規約 を破って書かれたアプリでは逆効果になってしまうことがある。
386 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:00:34.53 ID:ZnRwde8F.net] [補足] なお、Cの伝統だと、 #define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } ではなく、 #define b(x,y) do {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } while(0) と書く。 こうしておくと、このマクロを{}ブロックを伴わないif文に書いたときに異常動作 をしない。
387 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 17:08:36.84 ID:+XHxoAeu.net] >>378 素直に読めばグローバルスコープで予約されているものは グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。 そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、 何を言うてんのやろ……? ってなるわけ。
388 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:11:34.77 ID:ziXVeJXQ.net] >>350 in instantiation of function template specialization ... requested here というエラーが出ます
389 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:14:33.59 ID:fCVb5Gn/.net] >>376 だから二重評価が問題になるようなことをマクロでやるなって その例だってinlineで書けるだろ 邪道なやり方を保護するために 本筋が迷惑を被るのは本末転倒だ
390 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:15:05.39 ID:ZnRwde8F.net] >>380 「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」 「file scopeを持つ識別子として使用されるために予約されている」 だべ? block scopeを持つ識別子として使用されたら、話がおかしいと思うが。 「この自動車は、仕事で使うために予約されています」 の場合、その自動車を私用で使えば、規則違反だよね。
391 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:15:45.54 ID:fCVb5Gn/.net] int _x; //こんなのがあっても #define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが
392 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:19:07.49 ID:ZnRwde8F.net] >>382 でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう ことが一番の目的だと思うぞ。 もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに 衝突する可能性が僅かにあるため。 なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を 書こうとするとコンパイラ作りに手間がかかるから。 もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる ことがある。
393 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:20:06.45 ID:ZnRwde8F.net] >>384 b(_y,_x) と書いたらどうなるか考えてみたらしだんご。
394 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:25:17.52 ID:fCVb5Gn/.net] >>385 おまえさんはコンパイラ屋か? そうだとして同業者は__builtin_va_argのように注意深くやってるぞ 自分らのエゴのために客に制限をかけるようなことを でかい声で叫びまくるのはやめてくれ
395 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:30:48.87 ID:ZnRwde8F.net] >>387 まあ、本当はコンパイラ内部でこっそり使う場合、絶対に衝突しないような もっと変な名前を使っているから大丈夫なんだ。 起動時の TickCounter の値を変数名の一部に入れたりとかね。
396 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:37:15.73 ID:2WBeknRq.net] >>383 ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの
397 名前:デフォルトの名無しさん [2021/01/31(日) 17:42:24.07 ID:/1NNOLNs.net] ヘッダーファイルに書くか、ソースファイルに書くかの違いも大きい。 ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。
398 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:45:15.36 ID:fCVb5Gn/.net] >>386 {int _x=_y; int _y=_x; f(_x,_y); g(_x,_y); } どうなるって言いたいんだ?
399 名前:デフォルトの名無しさん [2021/01/31(日) 17:51:16.48 ID:/1NNOLNs.net] C/C++の場合、スコープだけ意識するのは不十分で、ヘッダーかソースかで厳格さを変える柔軟性が必要。 ヘッダーに書くと影響範囲が大きいから。
400 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:57:13.23 ID:fCVb5Gn/.net] テンプレートなんか普通にヘッダに内容全部を書くが マクロでバカやるやつがいなければ平和だよ
401 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:58:49.95 ID:A8yllSCF.net] ローカルスコープでも _x が禁止だというなら >>346 のマクロ a 定義内で _x を使っていい理屈もわからんよな。
402 名前:デフォルトの名無しさん [2021/01/31(日) 18:55:26.91 ID:gXTMTlGe.net] std::pair<>を継承してquadを作る場合どうなりますか?
403 名前:デフォルトの名無しさん [2021/01/31(日) 18:58:05.19 ID:gXTMTlGe.net] std::regexが意外と使える子に成長してますが、標準化委員会では捨て去る提案まで出てるそうで。
404 名前:デフォルトの名無しさん [2021/01/31(日) 19:37:14.68 ID:/1NNOLNs.net] std::regexはプロパティが貧弱なので結局、従来の正規表現ライブラリ使う羽目になる。 std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。
405 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 19:51:04.44 ID:vFnk+kXo.net] 順序付き pair って自分で順番に格納するのと2要素のsetにするのどっちが良いですか
406 名前:デフォルトの名無しさん [2021/01/31(日) 20:39:53.24 ID:/1NNOLNs.net] pairはSTLのアルゴリズムの恩恵を得るための物。 自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
407 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 21:08:09.18 ID:vFnk+kXo.net] set< pear<int, int> > で、ある数を含む pear を高速に検索する方法ってある?
408 名前:デフォルトの名無しさん [2021/01/31(日) 21:47:36.00 ID:jyYnHelr.net] set<int, vector<pair<int,int>*>> 元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく 配列でやっても速そう list[m].empty() こういうリストで空っぽかどうかわかればいいわけだ vector<vector<pair<int,int>*>>>; それならドでかい二次元配列に入れた方がラクかもしれない 連想配列でも出来る map<int ,vector<pair<int,int>*>>> 静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる 全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
409 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 22:01:19.63 ID:gvpDZJRs.net] 構造体にしろよバカども 読みにくいだろ
410 名前: mailto:sage [2021/01/31(日) 22:54:08.94 ID:wKQ2AmTw.net] >>333 >>339 では _x ではなく x_ にしようっかな‥‥
411 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 23:01:41.96 ID:eyFvwlDf.net] googleスタイルガイドはそちらを推してるな
412 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:17:42.16 ID:FSry25xS.net] >>391 int _x=_y; int _y=_x; ここの二行目の右辺の_xは、b(_y,_x)の第二引数の_xではなく、一行目 で宣言した_xになっているので、b(_y,_x)の第一引数の_yになる。つまり、 int _x=引数の_y; int _y=引数の_y; となるので、{}の中の_x, _yは、どちらも引数の_yの値に等しくなってしまう。 これではマクロ作者が意図したことではなくなってしまう。
413 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:19:32.38 ID:FSry25xS.net] >>394 まあ、それはもっともな指摘なのだが、アプリ本体では使用禁止で、 マクロでは使用可能と勝手に解釈してしまうのが一つの流儀。
414 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:22:56.68 ID:FSry25xS.net] >>389 そうではなくて、ローカルスコープで使うことそのものが、file scope で使ってないことに当たるので、規約違反と言うことになると解釈できる 気がするんだ。 なぜそんなルールにしたのかは分からんがな。
415 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 03:22:30.15 ID:fw9rYrIy.net] >>405 残念だったね。インライン関数使おうね。 >>406 あなたの流儀を規格の定めであるかのように話すのは迷惑なのでやめてくださいね。 >>407 file scope で予約されてる名前を file scope で使ってないなら問題ないね。 規約違反などという解釈にはならない。気のせい。そんなルールになってない。ってことで終われよ。
416 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:01:58.51 ID:v6ebtUL1.net] >>400 unordered_map<int, int>
417 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:30:17.18 ID:LhepLs74.net] >>406 マクロ定義内の仮引数名は当のマクロ定義外の何者とも関係しないのでは… いわゆる束縛変数
418 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:38:30.21 ID:LhepLs74.net] として安全に取り扱われる 一方>>346 の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険 これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが 個人的には君子なので危うきには近づかないことに死体、
419 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 08:09:47.67 ID:v6ebtUL1.net] うちの若いのがあんなアホマクロ書いてたら張っ倒す まあ、やらかしそうなのはいないけど
420 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 09:26:53.82 ID:5yr9aQzL.net] >>346 そもそもそのマクロで生成される変数はファイルスコープでないから、そもそも問題外では? 仮にファイルスコープな変数を宣言するようなマクロでも、ユーザが意図せず
421 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:43:32.41 ID:xFB8fPis.net] 仕事に情熱が持てなくなった
422 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:43:38.91 ID:VhfMLcQM.net] >>346 アホだ
423 名前:デフォルトの名無しさん [2021/02/01(月) 12:06:54.06 ID:ZelzH3+k.net] >>414 コロナの影響だろな。 福島大爆発の影響も計り知れない。 「原爆ぶらぶら病」で検索してください。
424 名前:デフォルトの名無しさん [2021/02/01(月) 12:30:15.68 ID:jyRtFT93.net] >>408 >file scope で予約されてる名前を file scope で使ってないなら問題ないね。 そうじゃない。 英語原文を読めば、file scopeで予約されているのではなく、file scopeで 使用するために予約されているのだ。 だから、file scope以外で使用することが禁止されている。
425 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:32:18.30 ID:jyRtFT93.net] >>417 日本語で言うなら、「file scope 専用」。
426 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:46:40.95 ID:/T40sBmV.net] >>414 ちゃんと飯を食え。 週末はちゃんち休め。 年10日は連続した休暇をとれ
427 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:55:04.41 ID:ioMwojjO.net] >>417 その一文ばっかりやたらこだわるけど これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ グローバル名前空間の名前以外については言及してないの ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
428 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 13:14:13.18 ID:Z79JHlVc.net] >>417 あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。 普通はコンパイラ実装者のために予約されている、だけで十分でしょ
429 名前:デフォルトの名無しさん [2021/02/01(月) 13:45:48.95 ID:fos4FOVO.net] 仕事に情熱が持てなくなった
430 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 13:50:50.97 ID:jyRtFT93.net] https://www.learncpp.com/cpp-tutorial/keywords-and-naming-identifiers/comment-page-2/ Second, you should avoid naming your identifiers starting with an underscore, as these names are typically reserved for OS, library, and/or compiler use.
431 名前:デフォルトの名無しさん [2021/02/01(月) 14:08:01.06 ID:fos4FOVO.net] >>373 obj& operator [] (int i) {return elem[i];} もちろんelem[]の定義はobj elem[]; obj.shape() も実装すると便利
432 名前:デフォルトの名無しさん [2021/02/01(月) 14:13:00.08 ID:fos4FOVO.net] >>416 「コロナでゴロゴロ病」
433 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 15:47:43.70 ID:Z79JHlVc.net] >>423 そのサイトを紹介して何の証明になるの?
434 名前:デフォルトの名無しさん [2021/02/01(月) 16:16:30.24 ID:ZelzH3+k.net] >>426 https://isocpp.org/
435 名前:デフォルトの名無しさん [2021/02/01(月) 16:22:14.79 ID:ZelzH3+k.net] C++ is the only real language for expert developers.
436 名前:デフォルトの名無しさん [2021/02/01(月) 16:55:19.50 ID:fos4FOVO.net] C/C++は好きだし比較的最強の部類だと思うけど 夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
437 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 17:40:26.58 ID:LhepLs74.net] システム記述言語はアセンブラを除けばこの世にCとC++とRustしか、
438 名前:デフォルトの名無しさん [2021/02/01(月) 17:46:42.82 ID:ZelzH3+k.net] 中国人のありがたいお言葉ですぞ。
439 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:02:36.06 ID:jyRtFT93.net] 大体、この板には中国人や韓国人はほとんど来ず、来ているのはアメリカ人 やヨーロッパやアフリカが多いらしい。
440 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:44:36.44 ID:+21BJdPm.net] いやrustが最強でしょww
441 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:47:23.23 ID:CDWd/LQ7.net] Goは駄目なん?
442 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:57:50.94 ID:0s4gr52A.net] 自作の構造体をsetに入れたいときって operator < さえ定義しとけば良いの? eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
443 名前:デフォルトの名無しさん [2021/02/01(月) 21:08:59.66 ID:ZelzH3+k.net] 検索するとひろみをお勧めしてくる時点で無理だった。
444 名前:デフォルトの名無しさん [2021/02/01(月) 21:34:17.50 ID:ZelzH3+k.net] しかもチップも取るんかーい!
445 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:43:42.23 ID:CtNYZU7D.net] >>435 erase含め、同値性は!(a<b)&&!(b<a)で判定される 全メンバ一致で同値と
446 名前:ンなしたいなら辞書順比較する比較関数を定義すればよし [] [ここ壊れてます]
447 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:46:24.33 ID:FbSt8IWH.net] 演算子オーバーロードは地雷度高い。
448 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:53:14.56 ID:CtNYZU7D.net] まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね
449 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:03:45.93 ID:f9q1oLiO.net] C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は 「0埋めしたいビットを0、他を1にしたもので&演算する」 であってますか?
450 名前:デフォルトの名無しさん [2021/02/01(月) 23:11:37.27 ID:ZelzH3+k.net] 合ってます。
451 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:17:45.03 ID:f9q1oLiO.net] >>442 ありがとうございます 今までは例えばQWORDの上位3バイトを0埋めしたいってとき(value << 3*8) >> 3*8って言う2命令使う馬鹿な方法でやっていました・・・
452 名前:デフォルトの名無しさん [2021/02/02(火) 02:08:00.00 ID:DmcXRB7X.net] へ椅子ブックが少し綺麗になってます。
453 名前:デフォルトの名無しさん [2021/02/02(火) 02:10:27.05 ID:DmcXRB7X.net] RedditのC++コミュは17万人、オンラインが500人以上。 凄いね。
454 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:17:10.33 ID:uFATDe77.net] ビット演算の中で最速なのってシフトじゃなかったっけ? だから下手したら>>443 の方がフェムト秒レベルでは微妙に早いんじゃない?
455 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:29:21.33 ID:kGc73xZq.net] 命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か
456 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 12:37:23.36 ID:vWAdhQ36.net] >>446 CPUの世代やアーキテクチャによって違うが、 Latencyが、Shiftの方がandより少し遅いことがある。
457 名前:はちみつ餃子 mailto:sage [2021/02/02(火) 12:49:48.88 ID:+MtixY9O.net] >>434 Go は GC が前提にあるから少し制約が強いけども、 OS のカーネルを書くのでもない限り思ったより足かせにならないという評価はあるみたいだね。
458 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 13:08:50.07 ID:aIAA0dxH.net] Goはクソすぎるから駄目だ 何が駄目といってまず名前が駄目
459 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 13:45:57.34 ID:8HFbTrXI.net] GoはPC初心者用 昔でいういわばBASIC
460 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 18:03:08.15 ID:FSwj4KRK.net] バレルシフタと単純ゲート レイテンシも糞もねえだろ
461 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 18:11:36.53 ID:8HFbTrXI.net] でもその縛りプレイが大好きな変人も居る
462 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:23:15.74 ID:likaPPB8.net] operator ==も定義しておくとなお良い ==のために<が2回呼ばれるのもアホらしいと感じるはず… 結局std::rel_opsを使って全部定義するという結論に落ち着く
463 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:25:04.30 ID:likaPPB8.net] インテルのやつはバレルシフタじゃない気配がする… シフト結果をテーブル化した方が速かったことg
464 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:28:35.48 ID:likaPPB8.net] あるいは最大限バレルシフタにしようとしているがパイプライン1段に収まっていないだけかもしれん…
465 名前:はちみつ餃子 mailto:sage [2021/02/03(水) 00:25:34.21 ID:p0NvFN6a.net] >>443 gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。 主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど) たぶん and のほうが効率的ってことなんだろう。
466 名前:デフォルトの名無しさん [2021/02/03(水) 00:38:50.10 ID:53EFMpkm.net] ビットシフトは64bit整数でのコンパイラ解釈が信用できないからAND演算子使うのが確実だと思うけどどうかな。
467 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 00:51:08.70 ID:5b6XJ+8s.net] >>458 落ち着いてよく考えてみよう お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない 仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?
468 名前:はちみつ餃子 mailto:sage [2021/02/03(水) 00:54:51.58 ID:p0NvFN6a.net] 0xffffffffff とか書いてたら桁数を正しく書けてるか不安になる…… 今の C++ だと桁区切りも入れられるけど、 どう入れたら意図がわかりやすいかようわからんし、 シフトで表現するのもありな選択だと思う。
469 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 01:01:02.57 ID:+m9V7fCu.net] >>458 具体例をお願いできますか?
470 名前:デフォルトの名無しさん [2021/02/03(水) 01:20:23.24 ID:53EFMpkm.net] コンパイラがちゃんと32bit整数への丸め警告を出してくれるならいいが、しれっとコンパイルされたらお手上げ。
471 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 02:47:38.99 ID:+m9V7fCu.net] >>462 丸めって暗黙の型変換のことですか? シフト演算は特に関係しないと思いますが……
472 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:01:31.58 ID:QcjMAifW.net] >>460 0x0000'ffffull
473 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:29:42.77 ID:y3dS6mbz.net] unsigned long long x = (0x1ULL << 32) - 1ULL; ならちゃんと動く(と思う)が unsigned long long x = (0x1 << 32) - 1; とかだとイマイチ不安が…
474 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:38:54.06 ID:Nl+WsQpo.net] >>465 下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう
475 名前:デフォルトの名無しさん [2021/02/03(水) 10:23:38.02 ID:q8Ed7guF.net] 丸めと暗黙の型変換は違うものでは?
476 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 11:47:09.95 ID:HtH84Poo.net] 丸めや打ち切りは浮動小数点数の概念やね
477 名前:デフォルトの名無しさん [2021/02/03(水) 13:02:19.58 ID:53EFMpkm.net] ビットシフト記述は自然すぎてソースコードに埋もれてしまう。 64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。
478 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 14:45:43.48 ID:J722wycU.net] なにいってんだこいつ
479 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 15:50:32.48 ID:pE1foWCw.net] >>465 やっぱり、32BITの時が一番プログラミングし易かったな。 64BITになると、64BITと32BITを区別して書く必要が出てきて、 書くのが面倒になった。
480 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:12:23.88 ID:XaYGR0Wv.net] そう?ポインタサイズくらいしか違いなくない?
481 名前:デフォルトの名無しさん [2021/02/03(水) 21:29:02.90 ID:53EFMpkm.net] まじめにC/C++標準型size_tを使っている人には32bitと64bitの処理切り分けが地味に辛い。