1 名前:デフォルトの名無しさん (ワッチョイ 3b96-ov1m) mailto:sage [2017/07/29(土) 11:28:28.97 ID:o30VDF4g0.net] 次スレを立てる時は本文の1行目に以下を追加して下さい !extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part130 mevius.2ch.net/test/read.cgi/tech/1490917669/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 echo.2ch.net/test/read.cgi/tech/1478440682/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) - VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
528 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:13:48.77 ID:FGRVT/X40.net] 変数の宣言と関数の宣言の順序がどうでも良いのは自明 メンバ関数の定義がメンバ関数内で使用するメンバ変数の宣言に先行する場合も実験する限り合法 (規格に具体的にどういう文言で規定してあるのかは知らん まあ定義時点で不完全な型やら値やらはテンプレートの定義で頻出するから あんま定義と宣言の順序にこだわらない処理系の作りなのだと納得しておく しかしなぜかテンプレートの引数でない型の定義(または宣言)と使用には厳格な順序を求められる… 次のコードはビルドが通らない class Baz { // struct Bar; // 左のコメントアウトを外したら逝ける void foo(Bar& b); struct Bar { int x, y; } }; 多分Cとの互換性のために仕様がワケワカメになった例
529 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:17:46.72 ID:RAQSA3Kg0.net] ルールが存在してwell documentedで、ガバナンスがきいていることが重要 お前らのオレオレ哲学なんかどうでもいい
530 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:19:59.11 ID:EU1kDRi00.net] ああそっか、プロトタイプ宣言しなきゃいけないんだっけC++は C#の脳で考えてたわ
531 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:51:57.26 ID:MiX3UcgLr.net] >変数の宣言と関数の宣言の順序がどうでも良いのは自明 自明かねぇ C++11は問題になる例が思いつかないがC++98,03,14はどうでも良くない
532 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:01:20.86 ID:VLpwNclp0.net] コンストラクタ実行時のメンバ変数の初期化の実行順が、初期化子の記述順ではなくクラス定義での並び順に従うっていうのがあった気がするけど、新しい規格では変わったんだっけ?
533 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:10:24.95 ID:pFkNGMyF0.net] >>516 うそーん、初期化子の記述順>クラス定義の並び順だと思ってた。 てか、宣言の並び順は無関係? そら、警察官も道行く江添さんに聞きたくもなるわw
534 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:21:28.04 ID:MiX3UcgLr.net] >>516 微妙な表現以外、特に変わったという話は聞いたことがない C++03 12.6.2/5 Then, nonstatic data members shall be initialized in the order they were declared in the class definition (again regardless of the order of the mem-initializers). C++20 draft 15.6.2/(13.3) Then, non-static data members are initialized in the order they were declared in the class definition (again regardless of the order of the mem-initializers).
535 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:37:32.53 ID:i6uhqYA10.net] >C++11は問題になる例が思いつかないがC++98,03,14はどうでも良くない とか書いてるから何か制約が無くなるような変更があったのかと思って聞いたんでない?
536 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:39:43.42 ID:FGRVT/X40.net] ちな漏れがどうでもよい(どんな順序でも問題ない)と言ったのは 変数の宣言と関数の宣言の順序(どちらを先にするか)だからな これ豆な
537 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 23:00:05.29 ID:MiX3UcgLr.net] C++11でもこれがあったか struct A { int m; decltype(m) /*←mは先に宣言が必要*/ f() { return m; /*←mは後でもいい*/ } }; C++11で緩和されたのは11章のどっか(忘れた)
538 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 15:24:44.62 ID:5WRYI1ZX0.net] static メンバ関数と friend 関数の使い分けについて教えてください どちらも似た機能だと思ってしまうのですが‥
539 名前:はちみつ餃子 mailto:sage [2017/09/03(日) 15:42:16.65 ID:XXf7E2cS0.net] あ〜、そんなこと考えたことなかったけど、クラス (メンバ関数) 内部から見たら近いっちゃ近いのかも? クラスを定義する側じゃなくてそのクラスを使う側の気持ちで考えて。
540 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 15:47:48.54 ID:5WRYI1ZX0.net] friend 関数は public で,static メンバ関数は private で,て感じでこの前は書きました 普通はどうするものかをお聞きしたいところです
541 名前:はちみつ餃子 mailto:sage [2017/09/03(日) 15:55:23.63 ID:XXf7E2cS0.net] すまんけど自明すぎてどう使い分けるとか説明できない。 使い分け以前にそもそも理解できているか怪しいと思う。
542 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 16:12:00.06 ID:5WRYI1ZX0.net] 何度も宣伝するようで気が引けますが,前に書いたのは >>158 演算子のオーバーロードに絡むものは基本 friend で,内輪で使うものは private の static メンバ関数で, くらいの線引きをしています. 書いてみてわかったのは「自明」という感じはしないこと,かな,考えてみれば friend 関数って他の言語にはなさそうです
543 名前:デフォルトの名無しさん [2017/09/03(日) 16:48:05.14 ID:jXGwZqzU0.net] 何で? operatorはグローバルに出さなくても多重定義候補に挙がるぞ 俺は別の理由でoperatorをグローバルにする傾向があるが
544 名前: mailto:sage [2017/09/03(日) 17:05:16.51 ID:5WRYI1ZX0.net] >>527 codepad.org/8Z3c2obA ほー,これは不思議だなあ‥ friend をはずすとコンパイルできない friend をつけてしまうと public に置こうが private に置こうが関係ない,という認識であっていますか?
545 名前:デフォルトの名無しさん [2017/09/03(日) 17:23:08.48 ID:jXGwZqzU0.net] 何が不思議? friendを外すとメンバoperator+に過剰な仮引数となりエラー friendは「メンバではない」のでアクセス指定は無関係 1点だけ気になるのが、friendは当該クラス自体と同じスコープに新しい識別子を導入しないはず・・・ 識別子はoperator+で、これのみは某か標準のヘッダで既に宣言されているということか?
546 名前: mailto:sage [2017/09/03(日) 17:29:26.39 ID:5WRYI1ZX0.net] >>529 >operator+に過剰な仮引数となりエラー つまり operator+ の >>528 とは違うもう一つの呼び出し書式にしないといけないわけですね. でもこの場合は private に置くとコンパイルできない codepad.org/RLo9fKuI friend はアクセス制御如何にかかわらず「強引にpublic にする」ように見えますね‥わからない‥
547 名前:片山博文MZ mailto:sage [2017/09/03(日) 17:31:44.96 ID:zmbOaeS6d.net] friendなら、その人のプライベートにアクセスできる。それだけの意味。
548 名前:片山博文MZ mailto:sage [2017/09/03(日) 17:33:29.06 ID:zmbOaeS6d.net] ある人のfriendなら、その人のプライベートにアクセスできる。
549 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 17:36:12.98 ID:5WRYI1ZX0.net] >>531 >>522 をどうかよろしくお願いいたします.
550 名前:デフォルトの名無しさん [2017/09/03(日) 17:39:19.97 ID:jXGwZqzU0.net] >>530 強引にpublic・・・で憶えやすいならそれでいいんじゃね? ちな俺の憶え方はメンバでないものをどうやってprivateにするんだ、だ
551 名前:片山博文MZ mailto:sage [2017/09/03(日) 17:40:51.54 ID:zmbOaeS6d.net] あるクラスX内部のstaticでpublicな関数fは、Xのインスタンスの存在に関係なくX::fという名前でアクセスできる。 あるクラスX内部のfriendな関数gは、X内部のプライベートなメンバーm_aにアクセスできる。
552 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 17:42:36.39 ID:5WRYI1ZX0.net] >>534 確かに friend 関数は「メンバーじゃない」ですか‥main() と同じような普通の関数なわけですね‥
553 名前:デフォルトの名無しさん [2017/09/03(日) 19:02:31.58 ID:jXGwZqzU0.net] friendは他のクラスのメンバかも知れない そういうときも俺の憶え方なら動揺せずに済む
554 名前:デフォルトの名無しさん [2017/09/03(日) 19:05:08.53 ID:/S0gLPFy0.net] メンバ関数より、メンバでもfriendでもない関数を使おう って誰かが言ってた
555 名前:デフォルトの名無しさん [2017/09/03(日) 19:11:23.65 ID:jXGwZqzU0.net] 欲しい機能がメンバでない関数で使えないとなれば それはクラスの設計ミスないしはダサい設計だかんな クラックできちまうのと違う提供すべき機能の欠落
556 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 19:52:56.95 ID:yMO/rU630.net] またクズが暴れてるのか・・・
557 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 19:55:19.54 ID:eN0Ud7+B0.net] >>530 (1) friendが無い場合 「z = x + y;」に出くわしたコンパイラは 1. インスタンスxに対しするC::operator+(y)(1引数)の呼び出し 2. グローバルな関数C operator+(C const& a, C const& b)(およびその亜種)の呼び出し のあてはめを順次試みるがどちらの関数も宣言が存在しないからあてはまるものが無くエラーになる (2) friendがある場合 friendがつくことでoperator+()はCのメンバ関数ではなく、グローバルな関数として宣言されたことになる このとき「z = x + y;」に出くわしたコンパイラは、上の1、2の順で当てはめを試み、 グローバルな関数C operator+(C const& a, C const& b)の呼び出しと解釈する。 本来この関数はクラスCのprivateメンバにアクセスできないが、friendの力でそれができ、めでたくビルドできて動く。 細かい話は規格の人がフォローして☆ホスイ
558 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 21:08:24.75 ID:Kvjfvtnar.net] >(2) friendがある場合 最も近い(内側の)名前空間の関数になる(11.3/6-7) friend関数がメンバーではないことがC++14に明記されていなかったようで、C++17ドラフトに追記された模様(N4659 12.2/2) <おまけ> 宣言の場所がクラス内という事情により、リンカーはともかくコンパイラーから存在が見えにくい関数となる この関数を使うには ・名前空間スコープで明示的に宣言し直す C operator+(C const& a, C const& b); ・ADL(argument dependent lookup)でクラススコープの検索を発動させる >>541 でoperator+が呼び出せているのはADLによる
559 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 21:36:42.85 ID:Kvjfvtnar.net] つまりクラスの外で定義された関数をイメージすればいい struct A { friend void operator+(A,A) {/**/} }; ↓ struct A { friend void operator+(A,A); }; void operator+(A,A) { /**/ } // ただしADLが無いと見えない
560 名前:デフォルトの名無しさん [2017/09/03(日) 21:38:57.90 ID:ipvja13x0.net] ドット拡張とかすればいいのにね int static_value.fanction() = 0; // function専用 vid functionx.function(char*p){} // function専用 ファイル内スコープなんて今時ほとんど使わないから無視するか識別子重なったら同一と見做すかして ついでにドット型はファイル内の前方参照も無くし宣言を省けるようにするとかさ
561 名前: mailto:sage [2017/09/04(月) 01:15:45.54 ID:rnM3x3Xp0.net] >>541 >friendがつくことでoperator+()はCのメンバ関数ではなく、グローバルな関数として宣言された なるほど,そんなところだろうと >>528 で考えておりました. 件のライブラリもどきでは,operatorX のみクラス外に公開できればいいので,friend 関数で公開しておりました その他は(基本的に)(公開すらしたくなかったため)static メンバ関数でのprivate 宣言となりました. そうしたいようにそう書けばいいのですが今一つ統一感を見えてなかったかもしれません. >>540 すみません
562 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 06:46:46.49 ID:bUZLYHBF0.net] >>522 static関数とfriendは全然違うし似てるとこなんてない
563 名前:デフォルトの名無しさん [2017/09/04(月) 08:11:17.30 ID:6a+3L2fAd.net] >>546 みなさんこれが典型的ななんの役にも立たない回答の好例です
564 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:13:10.29 ID:t0m5bmxTM.net] 煽ることしかできない奴乙
565 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:17:12.97 ID:MR3pz7f3d.net] >>546 共通点はある
566 名前: mailto:sage [2017/09/04(月) 08:28:42.00 ID:CIc3tQw70.net] >>546 static 関数をpublic に置くか,friend 関数にするかの判断がよくわからないのです. なにか指針があればうれしいのですが
567 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:37:44.08 ID:MR3pz7f3d.net] 呼ぶときにクラス名を書きたいか書きたくないかで判断 コンパイルした結果には大した差はない
568 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:51:25.02 ID:EfQNUMljd.net] staticだとADLに引っ掛からないとか?
569 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 09:10:00.24 ID:s4lmvNao0.net] クラスの外の関数とオーバーロードさせたければfriend https://ideone.com/Bfcfbq
570 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:13:49.53 ID:roJHcSrip.net] なんでこんなどうでもいいことで30も消費してんの
571 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:38:52.68 ID:Ly8n+qhB0.net] staticはメンバを触れない。friendは触れる。 それくらいしか違いないけどなぁ。 俺、フレンド関数はほとんど書いたことない。
572 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:42:45.81 ID:EfQNUMljd.net] >>555 ?
573 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:44:19.85 ID:Ly8n+qhB0.net] 違ったっけ。 staticってthisもってないんじゃなかった?
574 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 11:03:17.00 ID:Ly8n+qhB0.net] https://ideone.com/qDEfdG 勘違いやったわ。ごめんなさい。 一個勉強になった。
575 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 11:51:31.64 ID:ByDgWFhHM.net] メンバ変数をprotectedにする人ってなんなの?露出狂なの?
576 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 11:55:13.79 ID:EfQNUMljd.net] そういう人が日本に一人二人いるかも知れないけど、気にするだけ損だよ
577 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 12:17:47.72 ID:Ly8n+qhB0.net] 継承しても触れるようにするためだけど。継承自体がほとんどない。
578 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 12:51:51.83 ID:bUZLYHBF0.net] >>558 勘違いというのが勘違い
579 名前:デフォルトの名無しさん [2017/09/04(月) 12:57:07.34 ID:KIEUzmnzM.net] クラス内に定義されたstatic関数は、そのクラスのオブジェクトが存在しなくても使える関数ってのが本来の意味。 動的なオブジェクト状態には依存せず、静的なクラス構造のみに依存するからstaticね。 対してfriendは、自分をさらけ出す人を指定するめのもの。 stream のから呼び出されるオペレーターを定義する時には、既に完成している stream (だけ)に対して自オペレーターをさらけ出してしまうのがいろいろな意味で最も効率的。 以上から、friend関数は、静的ポリモーフィズムを関数レベルでお手軽に実現したいときに使うと思っている。
580 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 13:03:46.35 ID:bUZLYHBF0.net] 表層的に言うと staticはグローバル関数をクラススコープにして、かつアクセス制御も効くようにしたもの friendは>>531 の通り ただそれだけのこと
581 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 13:05:20.90 ID:ByDgWFhHM.net] >>561 なんで素っ裸でコートきてんの?露出狂なの?って聞かれて コート脱いだらちんこ見えるようにする為だよって答
582 名前:えてんのと同じだぞ まったく…露出狂は社会に出ちゃいけない存在なんだから、もう二度とプログラミングするんじゃないぞ [] [ここ壊れてます]
583 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 13:05:58.55 ID:ws3TkDjE0.net] 仕様がグダグダですな。
584 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 15:31:51.46 ID:xMNR7APW0.net] >>565 うまい事言うなあ friendは「なんで俺にだけ素っ裸見せんの?露出狂なの?」と聞かれて 「だってお前友達じゃん。だからお前にだけ俺の裸見せてやんよ」と言ってるわけだしな」
585 名前:デフォルトの名無しさん [2017/09/04(月) 16:26:06.19 ID:pd3pCmCq0.net] あれだろ 日本語のガールフレンドと 英語のgirl friendじゃ意味が違うというアレ
586 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 16:40:24.27 ID:Ly8n+qhB0.net] >>565 あんたに決められる筋合いはねー。災いあれ。
587 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 16:58:13.05 ID:EfQNUMljd.net] friendはクラスの役割を適当に分担しながら実装の隠蔽を図るのにはまあ妥当な仕組みだろうな
588 名前:デフォルトの名無しさん [2017/09/04(月) 17:07:07.44 ID:pd3pCmCq0.net] 継承をほとんど使わないってどんな分野だろう 俺んとこではポートを叩くときのプロトコルが 似ているようで少しずつ違うなんての普通にあるし
589 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 17:13:32.82 ID:MR3pz7f3d.net] 複数のクラスのfriendが可能 staticは1個だけ
590 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 17:15:33.44 ID:EfQNUMljd.net] ダックタイピングじゃね?
591 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 18:52:24.45 ID:s+p5aXGeM.net] >>567 親しき仲にも礼儀あり。 アクセサぐらい用意するよね。
592 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 19:06:46.17 ID:CIc3tQw70.net] >>565 >もう二度とプログラミングするんじゃないぞ わかりました,もう止めます‥
593 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 19:28:25.71 ID:EfQNUMljd.net] C++のfriendが現実世界の友達と違うのは、最初に決めたやつ以外にfriendを増やすことは全く好ましくない、 という点だろう
594 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 19:58:54.95 ID:ByDgWFhHM.net] >>569 publicにしてあるほうが、まだかわいげがあるよ もう、これからはすべてpublicにしなさい
595 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 23:34:49.89 ID:jzRaTvEE0.net] friendじゃなくfamilyが良かった気がする
596 名前:デフォルトの名無しさん [2017/09/04(月) 23:45:07.31 ID:pd3pCmCq0.net] そうだね、ニュアンス的にはそっちだ
597 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 10:50:00.46 ID:D99g/mXF0.net] >>578 #define family friend で行ける?
598 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 12:19:42.29 ID:FAzSlJ+ld.net] #define amigo friend
599 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 12:30:05.08 ID:eN2J5TsS0.net] #define brother friend
600 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 13:50:03.50 ID:MHv2cVQ40.net] printf("We are the World."); ←わかる cout << "We are the World" <<endl; ←わからない printfは「関数」だからわかります。 coutの<<はシフト?よくわからないです。 なぜC++はこんな文字の出力のさせ方にしたんでしょうか?関数じゃダメだったんですか?
601 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 13:54:25.72 ID:5+GcycqS0.net] 方法が増えただけ 以前どおり関数でも大丈夫だよ
602 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 14:03:50.06 ID:CTfci4Vl0.net] >>583 <<は演算子オーバーロードだけどcoutなんて使う必要ないよprintfでOK
603 名前:デフォルトの名無しさん [2017/09/05(火) 14:04:00.15 ID:5KjI8r3d0.net] >>583 それはまさにC++の作者(以下、禿)が 彼の著書でアピールしていたことだ coutとは何か? <<とは何か? 記号と意味はどこでどのように関連付いているのか 意味は関数で表記することにしよう <<の意味を表記する関数の関数名をoperator<<としよう プログラム言語の命令とデータは動詞と目的語だ 動詞は関数と1対1対応でよいが目的語の定義は動詞の蓄積だ ・・・てな具合
604 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 17:31:12.14 ID:LcvSXQg0d.net] >>583 シフト演算子を全く別の意味に使う ひどい設計だと思う
605 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:16:33.48 ID:FAzSlJ+ld.net] それほどでもない
606 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:16:37.41 ID:deDONG/TM.net] cout.<<("We are the World"). <<(endl); があれば少しはマシだったかね。
607 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:45:41.20 ID:fgaIXgJY0.net] >>583 演算子のオーバーロードのよいお題ということで無理矢理ねじこんだんじゃないかな
608 名前:デフォルトの名無しさん [2017/09/05(火) 18:48:59.76 ID:Ol0Fklqi0.net] using namespace std; double value = 1.23; cout << "value = " << value << endl;
609 名前:デフォルトの名無しさん [2017/09/05(火) 19:06:29.40 ID:/x4Q9Nfh0.net] >>587 お約束を破っているが流し込んでる感が出ているので芸術点高い
610 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:25:16.50 ID:FAzSlJ+ld.net] +-*/と違って<< がシフト演算子なんて決まってないから「本来と違う」なんて意味なさない
611 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:34:59.61 ID:TUBHCjnbM.net] vectorオブジェクトが破棄されるとき、要素の解放順は要素順であることは保証されていますか?
612 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:39:42.84 ID:DJL8TJyoM.net] >>594 されてない
613 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:39:47.76 ID:LcvSXQg0d.net] >>593 いや決まってる ライブラリを抜きにした純粋な言語ではシフトの意味しかない 元の言語のC言語も同じ * の方がいろいろな意味で使われている
614 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:42:00.05 ID:FAzSlJ+ld.net] >>596 べつにc/c++の話じゃなく、一般に<<をIOの意味で使ってもなんとも思わんでしょ +-*/はさすがに刷り込まれている
615 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:04:52.50 ID:Xvi9WQb30.net] 数学の演算子とプログラム言語の演算子のことじゃないかな。 + - は数学とプログラム言語で一致 * / は数学と違うけど文字セットに乗除の記号がないし妥当な代用 << をシフトに使うのはC系プログラム言語の独特の使い方 だったら << が出力になってもええじゃないか、という話。
616 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:10:04.82 ID:CG6xGPaC0.net] 向きは違うけどbashみたいなイメージだと思ってた
617 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:10:32.88 ID:gdvLxkwI0.net] お前がそう思うんならそうなんだろうお前ん中ではな
618 名前:片山博文MZ mailto:sage [2017/09/05(火) 20:11:08.83 ID:HWiXORhGd.net] 数学では、比較してずっと小さい、ずっと大きいという意味で<<、>>を使うことがあるみたいだが。
619 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:11:12.82 ID:TUBHCjnbM.net] >>595 ありがとうございます 保証するにはどうすればいいですか? ググってstackoverflowとか見たんですが、できないという人もいたり clear()を使えという人もいてよくわかりません
620 名前:デフォルトの名無しさん [2017/09/05(火) 20:17:36.79 ID:5KjI8r3d0.net] 禿が言い出した<<と おまいらが言い出す<<では 悪いが社会への影響度がまるで違う 大勢のPGが<<はI/Oだと素直に従うかどうかでだ 新しい言語に旧来の言語と似た記号が出てきたからって 同じ意味でなければならないという法はどこにもない
621 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:19:03.84 ID:D99g/mXF0.net] >>602 なんで順番が気になるんだ?
622 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:21:01.51 ID:eN2J5TsS0.net] ローテート命令が演算子化されてないのは何故なんだぜ?
623 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:58:17.14 ID:TUBHCjnbM.net] 自己解決しました >>604 必要な場面がありまして
624 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 21:12:58.72 ID:Eko3GwfuM.net] printfをモダンにアレンジして新規格作ればいいのに。
625 名前:デフォルトの名無しさん [2017/09/05(火) 21:50:59.32 ID:5KjI8r3d0.net] >>605 それな 俺も
626 名前:時々欲しくなるんだけど キャリーを含む/含まないとかCHAR_BITの違いとかで 移植性が確保しにくそうだよな 記号を何にするかなんて後から決めりゃいいことだ [] [ここ壊れてます]
627 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:29:35.14 ID:NIuXE25q0.net] >>605 ローテートなんて頻繁に使うものじゃないから ビットが立ってる数を数えるとか、 ビットが立ってる位置を調べるとか、 バイト単位の並び替えとか、 小数から整数へ四捨五入とか、 他にいくらでも足したいものはある
628 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:54:34.26 ID:DO26xGrR0.net] 誰がこんなクソ言語つくったんだよ 作者はたぶんバチが当たって禿げてるはず