1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ] プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。 関連スレやURLは>>2 以降。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・ぐぐる ・マニュアルで探す ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(なるべくそのままで) ・実行環境(OS名、コンパイラ名) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって小心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。 宗教的な話題は禁止します。
666 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 21:19:00 ] >>663 この辺があやしい if (cuetarget=NULL){
667 名前:663 mailto:sage [2009/12/13(日) 21:27:17 ] 解決しました。ありがとうございます。我ながら何をやっているのか…。
668 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:10:06 ] 定数を左辺値にしないから・・・・・
669 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:27:02 ] いまどきのコンパイルなら警告出るだろ
670 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 22:50:01 ] 脳内警告が常に出ます
671 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:07:23 ] >>668 左辺値の意味わかってないだろ。 まあどっちにしても定数を左に置くやつは信用できないけどな。
672 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:30:07 ] >>671 右の間違いだろ
673 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:44:07 ] プログラムの意味的にそうするのが自然であればそれでいいけど 単に凡ミスを防ぐために読みづらくするのは嫌だと言ってんの。
674 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 11:21:39 ] なんだ嫌なのか。
675 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:01:02 ] 俺も定数を左に置くような奴を見たら、どっかおかしい人だと思うだろうな、正直。 当然、そう書こうとする動機は知っているが。 ==と間違えて=を書く確率は、ちょっと慣れたまともなCプログラマなら0に限りなく 等しい。つまり、予防策としての効果も0に限りなく等しい。 よって、見た目に優れた書き方の方が良いが、左に定数を書く方がみんな見やすいと 思っているなら相当な変わり者だろう。物事は何でもかんでも対称的ではない。左と 右でどっちが感覚的に自然か、についても対称的な話ではない。現実に定数は右に 書かれる率が圧倒的に高い。 というようなことを感覚で判断できないか、または==と=を間違えることが実際に ある人なのか、どちらにしても信用には値しないだろうな。
676 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:03:56 ] ミスの確率の高さ低さより、致命傷になるかどうかじゃね? 今時のコンパイラを正しく使っていれば、間違えても致命傷にはならない だろうとは思う。
677 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:11:20 ] if ( MIN <= x && x < MAX ) {} とかは書くけど、 ==と=のミスを避けるために左に定数を書くことはないなぁ。 でも、 >ちょっと慣れたまともなCプログラマなら0に限りなく は、ソースがないから単なる妄想だね。^^ そしてハーブサッター先生の言葉を思い出そう。
678 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:16:48 ] ハーブサッターの言葉なんぞ多すぎてどれだか分かんねぇよw
679 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:21:59 ] ハーブサッターの言葉? 気の利いたコードは害悪だ、ってのは覚えてるな。
680 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 13:54:54 ] 個人的には >>677 > >ちょっと慣れたまともなCプログラマなら0に限りなく > は、ソースがないから単なる妄想 そういう統計は誰も取ってくれそうもないが、経験則としてはあるなあ。
681 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 14:08:48 ] 長くCを書いてると、比較の時は自然と==と入力してしまう
682 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:02:15 ] 0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。
683 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:06:07 ] if (!ちょっと慣れたまともなCプログラマ) { 682 名前: デフォルトの名無しさん [sage] 投稿日: 2009/12/15(火) 15:02:15 0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。 }
684 名前:デフォルトの名無しさん [2009/12/15(火) 15:17:15 ] 小心者はどこへいった・・・
685 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 21:57:19 ] 俺様は比較で代入なんて間違えないぜwwwwっていう勘違いちゃんならいるけど
686 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 22:35:07 ] 俺様は比較で代入なんて間違えないぜwww ただタイプミスするだけなんだぜwwww ダメじゃんorz
687 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:37:27 ] \(^o^)/オワタ
688 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 10:47:01 ] 結構膨大なコード書いてきたけど、ごく初期は別にして普通に一度も間違えないけどな
689 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:08:54 ] 間違えることよりも、早期発見できるほうが重要だけどな。 他人の作ったコードもメンテすることあるし。
690 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 14:09:20 ] タイプミスばっかでげんなり
691 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 15:27:40 ] >>688 PL/SQL と並行してやってると、代入/比較どころか 文字列のクォーテーションまで間違うぜ!
692 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:10:07 ] 他人に「定数は左に書こうぜ」とか言ってたらさらにキチガイじみてるな
693 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:11:16 ] 他人の作ったコードのメンテで「定数は左に」って役に立つの? 右に書いてあるコードを全部左に置き換えてからコード読むとか?
694 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:17:45 ] 「仕事じゃバカのコードもメンテしなきゃならないんだよ」理論の失敗例だな
695 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:25:03 ] vbの即時で文法ミス見つける機能が他の環境にもあれば そのうち実現するか
696 名前:デフォルトの名無しさん [2009/12/17(木) 04:02:14 ] パソコンの時刻を2038年1月19日3時14分7秒の30秒前に設定して30秒後どうなるのかを誰か試してみてくれないか? うちのパソコンでは何かうまくゆかないんだ
697 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 05:03:28 ] 女の腐ったような回りくどさだな どうせ30年弱の間には解決するだろ
698 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 08:04:46 ] 何でC/C++スレで2038年問題を?
699 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 11:32:43 ] 「C/C++スレ」ではなく「小心者スレ」だから
700 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 11:33:45 ] >>695 文法ミスじゃないから原因を特定しにくいバグになるんじゃないの? だから、コンパイル時にエラーとなるように定数を左辺に置くという小技が出てきたわけで。 今は警告でるんだからそんな小技はデメリットしかないと思うよ
701 名前:541 mailto:sage [2009/12/17(木) 17:41:27 ] >>541 で質問した者です。 検索の結果、やりたいことは「重複順列の列挙」と言うのだと分かりました。 また、列挙までのサンプルソースも手に入りました。 が、 あまりにも数字が多いので、必要のない物を出力前に除外しようと思い立ちました。 そこで質問です。除外条件で ・m桁目に2がある数値は除外 ・0が5個以上連続している数値は除外 ・左右反転して同一数値になるものは最初に出力した物以外出力しない 等々、どうやって条件付けしたらいいのか分かりません。
702 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:03:47 ] >>701 どういうものが必要ないかを俺が決めていいのかよ?? じゃぁ(ry
703 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 19:37:56 ] 条件付けで処理が増える分、余計に遅くなるだけな気もするが。
704 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 06:40:17 ] 選択整列法の平均比較回数が約N^2/4になるのはなぜですか?
705 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:50:35 ] 平均っていうか、単純選択ソートの比較回数は固定のはずでは
706 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:59:38 ] 選択ソートの比較回数は(N-1)*N/2じゃないの?
707 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:38:27 ] 失礼、挿入整列法でした。
708 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:49:35 ] スレ違いかもしれないけど。 wiiyourselfとかwiiremoteなどのwii関係のC,C++用のライブラリーでとっつき安いライブラリのおすすめがある人いませんか? 自分の作ったVRウォークスルーもどきにヘッドトラッキングを導入したいんだけど。
709 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:22:28 ] >>707 俺最低。異物挿入法とか読んだ。どこに異物があるのか。
710 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:49:11 ] >707 大雑把に説明してみる。 Insertion sort ではどの位置に要素を挿入するべきかを判定するために比較が用いられている。 最初逆順に並んでいる場合(=最悪の場合)は比較回数は 0+1+2+...+(n-1)=n(n-1)/2 になる。 各ステップにおいてどの位置に挿入することになるかは等確率となるため平均を考えると半分の位置になる。 従って 0/2+1/2+2/2+...+(n-1)/2=1/2(0+1+2+...+(n-1))=n(n-1)/4 となる。
711 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:58:03 ] 補足。 >各ステップにおいてどの位置に挿入することになるかは等確率 例えば最悪値で n-1 回比較するケースにおいて平均を考えると (1+2+...+(n-1))/(n-1) = n(n-1)/2/(n-1) = n/2 で大体半分。↑の式でも正確じゃないけどまぁオーダーとしては合ってるはず。
712 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 02:59:32 ] 質問なのですが、投げられた例外の型ってどうやって判定してるんですか? catchで分岐する時です。 静的に分かるものですか? それとも実行時型情報みたいなの使うんでしょうか?
713 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 08:32:55 ] >>712 っ msdn.microsoft.com/ja-jp/library/cc440190%28VS.71%29.aspx
714 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 08:36:11 ] >712 静的には分からないので >実行時型情報みたいなの を使ってる。 g++ の場合だと正に std::type_info を使ってるらしい。 詳しく知りたい場合は BinaryHacks おすすめ。
715 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 14:51:07 ] try{ // コード }catch(Exception1 e){ //例外1 }catch(Exception2 e){ //例外2 }catch(Exception3 e){ //例外3 }
716 名前:デフォルトの名無しさん [2009/12/20(日) 16:14:52 ] #include <iostream> using namespace std; int main() { int n=100; double k = 1.0/n; for(double i=0.5;i >= -0.5; i-=k){ double x =0.0; x = i; cout << x << endl; } return 0; } これをコンパイルして実行したら0のところがe-16とかの小さい数になってしまいます。 原因を教えてください
717 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 16:18:46 ] >>716 www.kouno.jp/home/c_faq/c14.html
718 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 17:25:17 ] >>717 ありがとうございます 0のところだけ別に入れます
719 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 19:23:07 ] >>716 0以外の場合は浮動小数点誤差が情報落ちして消えてしまうけど、 0の場合は誤差がそのまま有効な数値になるから。 で cout << x << end; を使わず printf("%.2f\n", x ); を使えばいい
720 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 20:04:57 ] 定数は左に、インド人は右に。
721 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 20:44:05 ] なつかしいなおいw
722 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 21:42:41 ] インド人は右ってどういう意味?
723 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 21:51:22 ] ハンドルは右
724 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 21:54:28 ] そういう意味か!!!
725 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 22:49:34 ] >>724 「インド人を右に」でぐぐれ
726 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 23:01:19 ] >>716 みたいなのだと、100倍した値で計算して、表示の時に100分の1するのもいいかもな
727 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 01:03:47 ] 別の言い方をすれば、ostreamで浮動小数点数を出力しようとするとprintfの%g相当ということだな。 <iomanip>をインクルードして、例えば cout << fixed << setprecision(2) << x << endl; と書けば、%.2f相当の出力になる。
728 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:37:27 ] VS2010β2のC++を使ってみました。 UInt32 aa; aa = 0x12; FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create); BinaryWriter^ binWriter = gcnew BinaryWriter( fs ); binWriter->Write( aa ); binWriter->Close(); fs->Close(); 作成したtmp.binが使用中のままになっているため、2回繰り返すとエラーになってしまいます。 Closeしただけではダメなのでしょうか? すいませんがよろしくお願いします。
729 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 23:35:48 ] >>728 CLIの質問は大胆すぎるので別スレでどうぞ
730 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 23:38:00 ] >>728 エラーとはどういうこと? 次のように、単純に2回実行することを試したが、なんの例外も投げられることなく実行されるけど。 using namespace System; using namespace System::IO; int main() { UInt32 aa; aa = 0x12; { FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create); BinaryWriter^ binWriter = gcnew BinaryWriter( fs ); binWriter->Write( aa ); binWriter->Close(); } { FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create); BinaryWriter^ binWriter = gcnew BinaryWriter( fs ); binWriter->Write( aa ); binWriter->Close(); } }
731 名前:728 mailto:sage [2009/12/22(火) 01:08:58 ] >>730 すいません、他のサブルーチンがひっかけてました。 ありがとうございました。
732 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:35:39 ] >>731 そうそう、BinaryWriterのCloseは、大元のストリームもCloseすることになっているから、 fs->Close()は無くても平気だよ。もちろん、あっても害はないから気にしなくても全然問題ない。
733 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 02:58:29 ] すみません、 普通、構造体のインスタンスに、STLで見かける.size()メンバなんて有りませんよね? ttp://marupeke296.com/DXG_No37_AnimationController.html ここの「アニメーション上位レベル構造体」が「SetLoopTimeメソッド」で.size()されていて そのままインスタンスを作ってコンパイルしようとすると、当然のように >error C2228: '.size' の左側はクラス、構造体、共用体でなければなりません と出ます。 この構造体は何か、普通と違った使い方をしているのでしょうか? それとも私が、何か知らなければいけない事を知らないだけなのでしょうか。
734 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 04:52:19 ] >733 C++は詳しく知らないし、僕が昔使っていたときにはinterfaceなんてなかった気もするがおそらく class CHighLevelAnimController : IHighLevelAnimController { private: vector<struct HLANIMATION_DESC> m_Amin; CHighLevelAnimController operator=(CHighLevelAnimController& c) { return c; } public: CHighLevelAnimController() { } ~CHighLevelAnimController() { } bool SetLoopTime(UINT, FLOAT); ... }; CHighLevelAnimControllerクラスは、IHighLevelAnimControllerインターフェイスを継承(実装)して m_Aminオブジェクトは、vector<>のようなテンプレートクラスのインスタンスとしてCHighLevelAnimControllerクラスまたはその基底クラスで定義されている interfaceキーワードに詳しい人詳細キボン
735 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 05:39:46 ] >>734 Windowsでは、どこかのヘッダで#define interface structってされているだけ。 >>733 自分も、m_Animは実際にはなんらかのSTLコンテナか何かなのだと思う。
736 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 11:08:03 ] >>734 >>735 何か特別な使い方かと思いましたが、STLに包んでいるとかなのですね。 ありがとうございました。
737 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 16:13:02 ] すみません。 起動や大型のファイル群を読み込むなどで10秒前後待たせる時 画面にLoading表示やその進行状況を表示したいのですが、 あれはどう実装するものなのでしょうか? 普通に組むと1つの工程(ファイルなど)単位で処理が停止してしまいますし、 「Loading」「読み込み画面」などの検索ワードでは違うものばかりHitし、 実現方法を見つけられずにいます。 何かご助言を頂けると幸いです orz
738 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 16:24:50 ] マルチスレッド
739 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 16:57:06 ] 1ファイルの読み込み途中の経過を出したいなら、読み込みの関数を呼ぶ度に進行状況のウィンドウを書き換える
740 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 17:13:38 ] >>738 ググってみました。マルチプロセス処理というものが有るのですね。 これで実現への道筋が見えました。ありがとうございました。 >>739 そうですね。その程度なら勉強〜開発時間を殆どかけずにやれそうですね。 ありがとうございました。
741 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 17:15:01 ] 凝ったLoading画面を作るならマルチスレッドが楽 止まってないことだけ示したいなら、一部読み込んでは表示、を繰り返せばいい
742 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 17:15:41 ] マルチプロセスとマルチスレッドは一般的には別物だぜ
743 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 09:19:30 ] 端折れば マルチプロセス>メモリ空間が別 マルチスレッド>同じメモリ空間
744 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 14:01:26 ] HAL研のプログラミングコンテストの難易度をおしえてください。 ひととおり文法勉強したんですが、難しく思えます
745 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 18:35:29 ] 2009年のを見たけど、C++を適切に勉強していれば(文法的には)難しくはないと思うけどな 最短経路問題とかその類のロジックを問う問題でしょ 文法が分からないのであればそれ以前のレベルってことだね
746 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 19:20:51 ] どうやらプログラミングではなく、アルゴリズムを競うコンテストっぽいね。
747 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:20:54 ] >>744 俺も去年の春からプログラミングを勉強し始めたばかりで参加してるけど アルゴリズムを考えるだけだから文法がわかってれば何も難しくもなくね? 難易度はどうですかって質問の答えにはなってないとは思うけど
748 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 01:18:43 ] >>745 >>746 >>747 なるほど。じゃ用意されている関数を使えるレベルすらないので もう少し勉強してからトライします。もう終わりそうですけど。 レスありがとうございました。
749 名前:デフォルトの名無しさん [2010/01/07(木) 06:18:50 ] openmpはマルチプロセスにする方法はありますか?
750 名前:デフォルトの名無しさん [2010/01/07(木) 14:17:20 ] const Hoge* const Hoge& Hoge const* Hoge const& の違いを実例を挙げて詳しく教えてください。
751 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 16:17:41 ] 実例だったら自分で組んでみれば分かるだろ。
752 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 17:02:22 ] 俺も const& の2つがよくわからん。
753 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 17:18:14 ] const Hoge& と Hoge const& は一緒だから気にするな & を超えて Hoge& const になると変わる
754 名前:753 mailto:sage [2010/01/07(木) 17:19:46 ] ごめん 何かわけのわからんことを言った 参照はもともと変更不可だから Hoge& const のようなものは無かった Hoge* const はある
755 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 17:30:50 ] >>754 もちつけ。参照も変更可能。 #include <iostream> int main() { int a = 10, b = 20; int &r = a; std::cout << r << std::endl; r = b; std::cout << r << std::endl; /* int &const cr = a; // `const' qualifiers cannot be applied to `int&' std::cout << cr << std::endl; cr = b; std::cout << cr << std::endl; */ int *const cp = &a; std::cout << *cp << std::endl; //cp = &b; // error: assignment of read-only variable `cp' std::cout << *cp << std::endl; return 0; }
756 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 21:52:05 ] delete this; って適切に現在?のオブジェクトを破棄してくれるのですか?
757 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 22:21:38 ] 適切に使えば
758 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 23:39:12 ] >>755 >>753 が言ってるのは「別のオブジェクトを指すように変更することはできない」ってことだよ。 Hoge&は最初からHoge*const相当で、参照にHoge*に対応するものはないんだから。
759 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:32:09 ] >>758 別のオブジェクトを指すように変更することはできない? いつからそうなってんの?w int a = 10, b = 20; int &r = a; std::cout << r << std::endl; r = b; std::cout << r << std::endl; これを実行して確認しる。
760 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:33:45 ] >>758 あーごめんw 俺が狂ってた。 r = b; これはひょっとして、代入されてるのか。 ( つд∩)うえーん ( つд・∩)チラ
761 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:42:09 ] int a = 10, b = 20; int &r = a; std::cout << &a << ' ' << &b << std::endl; std::cout << r << ' ' << &r << std::endl; r = b; std::cout << r << ' ' << &r << std::endl; 実行結果: 0x22cce4 0x22cce0 10 0x22cce4 20 0x22cce4 ___ ←樹海| オワタ  ̄|| ̄ ┗(^o^ )┓三 >>753 >>758 両氏ごめん || ┏┗ 三  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
762 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:50:12 ] 学校の課題で配列に10個の実数を入力して最大値と最小値を求める問題なんですが、最大値は正常に出力されますが、最小値がうまく出力されません。 #include<stdio.h> int main (void) { float x[11]; float max,min; int i; printf("実数を10個入力してください\n"); for ( i = 1; i <= 10; i++){ scanf("%f",& x[i]); } max = x[0]; for ( i = 1; i <= 10; i++){ if (x[i] > max){ max = x[i]; } } min = x[0]; for ( i = 1; i <= 10; i++){ if (x[i] < min){ min = x[i]; } } printf("最大値は%fです\n",max); printf("最小値は%fです\n",min); return 0; } どこが原因なんでしょうか?
763 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:56:55 ] x[0]が未初期化
764 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 12:59:46 ] すみません。複数のクラスを辿りループ処理をするプログラムで クラス毎に1度だけ変数の初期化をさせたい場合、 1.コンストラクタを使う (再初期化が必要になった場合、結局の後者いずれかが必要に・・?) 2.各クラスのグローバルスコープに初期化用のstatic boolを置いて処理 3.初期化用メソッドを別に作って纏めて管理 この3つが思い付くのですが、 どういう初期化が定番、もしくは設計的に無難だと思われますでしょうか?
765 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 13:29:43 ] staticイニシャライザじゃダメなの?
766 名前:765 mailto:sage [2010/01/08(金) 13:30:28 ] ごめんJavaと勘違いしてました