1 名前:デフォルトの名無しさん [2010/03/05(金) 16:51:13 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.71【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1264774545/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め) ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。
691 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:28:04 ] 変数のスコープと規模は関係ねーだろ工夫しろ
692 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:30:50 ] 型名が変数名に含まれていないと型が分からないじゃないですか とか言ってシステムハンガリアンになりそうだな
693 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:33:40 ] LPDIRECTX9DEVICE dev; これってポインタかそうでないか
694 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:35:35 ] IDirect3DDevice9 * device; com とか全部に p 付けるのはめんどくさい
695 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:38:29 ] そんな訳でtypedefして型名に LP と付けました。 名前に書かれてるとわかりやすいですネ
696 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:39:30 ] nearポインタって組み込みとかだと 現役だったりするの?
697 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:40:19 ] CComPtr<IDirect3DTexture9> texture; std::vector<CComPtr<IDirect3DTexture9>> textures; これをpTexture、pTextureArrayとかにするのは嫌だ
698 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:49:14 ] おそらくVisualStudioしか使わない人がp付けないんだろうな イニシャライザリストでもNULLに初期化かどうかで迷うし
699 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:53:19 ] 俺システムハンガリアンじゃないけど、pくらいは付けるわ。 あとは特にprivate空間でとか割りと気楽に付けられる変数名は臨機応変。
700 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:56:40 ] >>698 emacs使いだけどpなんてつけないな。 ポインタかどうかに限らず、初期化リストで値突っ込むときは型見るだろ。
701 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:57:01 ] GCCで書いててもpは付けねーわ。
702 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:58:45 ] gccにエディタなんてあるの?
703 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:01:32 ] 標準入力からソース打ち込んでるんだろ
704 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:05:08 ] strcpyを使って配列を初期化するコードはあんまりよろしくないんですか?
705 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:08:01 ] intの配列とかだとよろしくないだろうな、とか言って
706 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:12:40 ] もちろん文字列ですよ^^
707 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:44:12 ] >>704 なぜよろしくないと思った(あるいは見た、聞いた?)のか?
708 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:12:22 ] VC2005以降は警告出るしな 出力先の配列サイズをチェックしない関数で危険だから safe関数使えって
709 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:17:15 ] >>688 >>690 引数、ローカル変数、メンバ変数くらいしか確認する必要ないし 普通初めて使う変数の型くらい確認するだろ >>693 >>694 ATL使えでFA スマポなしでプログラムしてるのが悪い >>698 初期化リストに突っ込むときは基本的に変数を作る時だから 自分で型分かってるだろ
710 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:26:42 ] >>709 は是が非でもp付けるのは認めないとする使いづらいPGの典型 >普通初めて使う変数の型くらい確認するだろ だから、初めて使う時以外、その変数は使わないのかってww 全部型覚えとくの?それとも使うたびに毎回確認するの?p って付いてるだけで一手間減るなら別にいいじゃない
711 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:30:45 ] どちらにしろ久しぶりに使うコードなら型を確認するだろう 型も分からない変数を扱おうとする人の気が知れない
712 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:34:13 ] コンパイラがチェックするのにpとか無意味。pが正しいかどうか保障できないし、結局確認しなけりゃならない。 C++でポインタ使うのはライブラリの中だけだし
713 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:35:42 ] 関数の戻り値がポインタだからって関数名の先頭にp付けてるか? 関数の定義を見なくても引数のどれがポインタなのか分かるように関数名を修飾してるのか? そもそもポインタかどうか以外にも確認すべき事はあるんじゃないか? ポインタかどうかだけ分かっても仕方が無いんじゃないか? ポインタ止めて参照にした時変数名変えるのか? ってこと
714 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:36:47 ] そうか毎回コンパイラにチェックさせて書き直せばいいのか そう考えたらIDEって便利だよな。 どれだけ適当でも行ける
715 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:38:15 ] どうせ毎回一発でコンパイル通る事ないしな
716 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:40:10 ] >>713 少なくともポインタ止めて参照に変えるようなケースなら そのタイミングでむしろ変数名変えたっていいんじゃね? とりあえずおちつけ
717 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 15:58:28 ] 好みだとは思うけど ・どうせ変数の型は使うときに確認する ・名前の変え忘れが多い(ポインタじゃないのにpつける、ポインタじゃなくなったのにpのまま) っていう実務上の教訓から、うちの会社はpつけんな、っていうコーディング規約になってるよ。 特にインテリセンスに慣れた輩は、変数名の記述ミス、スペルミスがあっても平気で放置するしな。
718 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:02:27 ] ポインタかどうか迷うぐらい曖昧だと変数名にpがついてたかどうかもわかんねーんじゃ? 読むだけならヒントにはなるかもね〜程度に考えた方がいい そして読むだけなら周辺をチラ見すりゃポインタかどうかの判断ぐらいすぐつく
719 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:05:46 ] Hoge hoge; Hoge hoges[num]; Hoge *hoge = new Hoge(); Hoge *hoges = new Hoge[num]; shared_ptr<Hoge> hoge; vector<shared_ptr<Hoge>> hoges; p つけると配列なのかそうでないのかとか 変数名の命名に困る
720 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:09:54 ] C++だとtemplateがあるからなぁ 名前付ける時点で型がわからないかもしれないじゃん そういう時はpの人はどうしてるの?
721 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:34:29 ] >>719 C++で今時生ポは無いだろう。
722 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:36:27 ] あるよ…
723 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:40:14 ] 必要ないところで汎用のスマポ使う奴は雑魚
724 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:00:23 ] >>721 今のC++でも普通に生ポは使うだろう。 俺はshared_ptr愛用するけども。
725 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:03:13 ] ポインタ扱うところはさっさとclass内に隠蔽しちゃうけど
726 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:03:26 ] 配列を渡す所全部テンプレートかvectorにするのは流石に厳しいな
727 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:04:18 ] >>721 は知らず識らず循環参照してそう
728 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:06:55 ] >>721 は最近スマポを勉強したばかりなので許してあげてください
729 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 21:49:29 ] 生ポはスマポより軽いですよ スマポなんて,絶対つかっちゃだめ
730 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 21:54:39 ] 結局どっちなんだYO
731 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 22:05:24 ] 共有するならshared_ptr しないなら状況に最適化されたスマポを自作 カプセル化された環境で管理しきれるなら生ポ
732 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 22:07:01 ] とりあえず生ポはクラスのメンバでなら持ってるな デストラクタで廃棄
733 名前:急にごめんなさい。。。 [2010/05/04(火) 22:10:50 ] 大学2年です。もう1時間半苦戦しています。教えてください。 構造体を使い、メンバー変数に氏名、所属コース、出身高校を持つものを作成し キーボードからこれらの変数を入力し、出力するプログラムを作成しなさい。 という実習課題がでたのですが自分が作成したプログラムでは セグメンテーション違反です と表示されるばかりで。。。 教えてください。どこがおかしいのでしょうか? #include<stdio.h> struct profile{ char *Name; char *Course; char *Koukou; }; int main(void){ struct profile seito1 ; printf("氏名を入力してください。\n"); scanf("%s",&seito1.Name); printf("所属コースを入力してください。\n"); scanf("%s",&seito1.Course); printf("出身高校を入力してください。\n"); scanf("%s",&seito1.Koukou); printf("氏名:%s\n",seito1.Name); printf("所属コース:%s\n",seito1.Course); printf("出身高校:%s\n",seito1.Koukou); return 0; }
734 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 22:17:13 ] いい気になりやがって。何でもかんでも&つけりゃいいと思うなよ
735 名前:デフォルトの名無しさん [2010/05/04(火) 22:17:54 ] とりあえず徹夜しろ。
736 名前:急にごめんなさい。。。 [2010/05/04(火) 22:19:56 ] &をつけてもつけなくても セグメンテーション違反です。と表示されます。。。 どこを変えればいいんでしょうか?
737 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 22:20:21 ] >>733 char Name[100]; //保存場所が無い。 scanf("%s",seito1.Name) //配列はポインタとして使える
738 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 22:22:58 ] >>736 入力された文字列のデータはどこに格納してるつもりだい
739 名前:急にごめんなさい。。。 [2010/05/04(火) 22:26:27 ] >>737 できました!!!ありがとうございます。
740 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 22:27:45 ] >>734 リアルゆとりにそんなこというなよ >>733 は低脳日本人が生み出した超すごい世代なんだから >>733 ゆとりだから質問するスレが分らないのはしょうがないけど、普通は pc12.2ch.net/test/read.cgi/tech/1269438098/l50 で宿題関連は質問する。次回からそこで質問汁
741 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:01:51 ] ポインタについて、*tに文字列を関数内で入れたいのですが、 下記のようにすると、ビルドは成功するのですが 実行時に"The variable 't' is being used without being defined" というエラーメッセージが出ます。 関数test(t)で*tに文字列を入れるにはどうしたらいいでしょうか。 教えてください。 int main(int argc, char *argv[]) { char *t; test(t); cout << t << endl; return EXIT_SUCCESS; } void test(char *t) { t = new char[100]; int i = 0; cout << "step1" << endl; t[i++] = 'a'; t[i++] = '\0'; }
742 名前:741 mailto:sage [2010/05/05(水) 01:09:57 ] pc12.2ch.net/test/read.cgi/tech/1269438098/l50 で質問しました。
743 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:18:04 ] >>741 void test(char *t) これはポインタを値渡ししてるからポインタを引数で返すことはできない ポインタを返すにはポインタのポインタ void test(char **t) にしなければならない 後は自分で治して
744 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:31:13 ] こっちにも貼っとくわ int main(int argc, char *argv[]) { char *t; test(t); cout << t << endl; return EXIT_SUCCESS; } void test(char *&t) { t = new char[100]; int i = 0; cout << "step1" << endl; t[i++] = 'a'; t[i++] = '\0'; }
745 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:32:30 ] >>741 つ void test(char* &t)
746 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:34:56 ] >>744 ポンタポンタ版もよろ
747 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 01:56:40 ] >>746 int main(int argc, char *argv[]) { char *t; test(&t); cout << t << endl; return EXIT_SUCCESS; } void test(char **t) { *t = new char[100]; int i = 0; cout << "step1" << endl; (*t)[i++] = 'a'; (*t)[i++] = '\0'; }
748 名前:741 mailto:sage [2010/05/05(水) 02:04:30 ] >>743-747 アドレス版(*&t)とポインタポインタ版(**t)共に ビルドと実行がうまくいきました。 本当にありがとうございました。 いと難しいこと限りなし
749 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 03:42:08 ] strncpyに関しての質問ですが, 実装が↓みたいな感じで かなり定型的で面倒なのですが, こういうものなのでしょうか. というより,もっと簡便な方法があったりするでしょうか? char dst[256]; memset( dst, 0, sizeof( dst ) ); strncpy( dst, src, sizeof( dst ) / sizeof( char ) - 1 );
750 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 04:00:42 ] 俺ならこうする char dst[256]; int len = strlen(src); if (len >= sizeof(dst)) { len = sizeof(dst) - 1; } memcpy(dst, src, len); dst[len] = '\0'; か、 こうする sprintf(dst, "%.*s", sizeof(dst)-1, src));
751 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 04:02:20 ] 所詮Cは高級アセンブラなのです。 マクロ使うぐらいじゃないかなぁ。 あとそのコードだとmemsetはいらないと思うけど。 Better CとしてのC++に移行するとちょっと楽になるよ。
752 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 04:11:46 ] C++でもSTL使えない環境だったらおなじですよね. あとmemsetはdstの最後に終端文字を付けてるんですね.
753 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 04:18:39 ] STLも使えないような糞組み込み環境なら贅沢言わないでCで書いてろよ……
754 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 07:05:54 ] >>749 「定型的」ってことは、文字列を入れる配列は「とりあえず0クリア」 みたいに思ってるのかね。 文字列の後ろはゴミを入れたままでいいよ。
755 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 07:53:56 ] >>732 他のメンバがあったりしてコンストラクタから例外が飛ぶと漏れることがあるから気をつけろよ。
756 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 08:55:01 ] cFunc::cFunc(HWND hWnd, bool tyui, int width, int height) { //初期化メンバ関数 this->init(hWnd, tyui, width, height); } C++の勉強をしていたのですが、とあるソースのコンストラクタの中に以上のような記述がありました クラスの中で、コンストラクタとは別に初期化用関数を作るメリットなどがありましたら教えて頂きたいです
757 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:12:25 ] 他のコンストラクタや コンストラクタ以外でも init() を使える
758 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:13:54 ] >>756 引数違いのコンストラクタが複数ある場合には必須だとか デフォルトコンストラクタを定義したいとか 色々あるだろうけど、this->厨は爆発すればいいと思う。
759 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:27:12 ] >>757-758 参考になりました。ありがとうございます。 ちなみに「this->」は何が問題なのでしょうか・・・?
760 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:34:17 ] this->厨厨は基地外だから触らなくていいよ
761 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 10:49:16 ] >>754 とりあえず0クリアがコーディング規約になってる場合もあるからなあ でも char dst[256] = ""; だけで0クリアできるんだけどね 配列の初期化では、初期化を行っている場合、値の指定されていない要素は0で初期化される (明示的に初期化していない場合は実際に何も初期化されないので、とりあえず何かで初期化する必要はある)
762 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 10:52:16 ] this->はインテリセンスが効いて便利と言う人もいるが 純粋にキモい
763 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 12:42:39 ] ゼロ終端さえあればあとはゴミだらけでもいい でも例えばその文字配列を丸ごとどこかファイルに永続化するような場合には、 予めそこにゴミが残ってる事もわかった上で使わないといけない 気にするべきポイントなんてそんなもん
764 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 12:53:34 ] ファイルに文字列、文字列のペアを保存して読み書きしたいのですが 今やってるのは ・keyの長さ(4 byte) ・valueの長さ(4 byte) ・key (x byte) ・value (y byte) を1つのデータと見て データの長さを読む→keyとvalueを読む→次のデータの長さを読む→・・・ といった感じで先頭から繰り返して欲しいkeyに対応するvalueをメモリに読み込みます ですがこれだと死ぬほど遅いので効率をよくしたいです なにか典型的な解決方法とかってありますか?
765 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 12:58:42 ] this厨 = インテリセンス厨 ってか.
766 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 12:59:12 ] >>764 まとめてメモリに読み込んでから処理する。
767 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 12:59:52 ] >>764 コード晒せ。
768 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 13:02:30 ] >>764 メモリに読んでから構造体(POD型)で取り出しちゃう
769 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 13:03:12 ] うろ覚えなんですが,構造体のコンストラクタで memset( this, 0, sizeof( this ) ); とすると良くないという話を前に聞いたんですが, どこが良くないか ご意見頂けませんでしょうか.
770 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 13:10:12 ] >>769 sizeof( this )これは置いといて。 コンストラクタで初期化されたメンバを0で塗りつぶしちゃいかんでしょ。
771 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 13:11:54 ] >>769 www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html
772 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 13:17:11 ] ありがとうございます
773 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 13:46:13 ] oshiete.goo.ne.jp/qa/2727121.html このような回答もあるのですが...?
774 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 13:58:33 ] C++ でクラスのメンバ関数を関数ポインタを外部のクラスメンバでない関数に渡して 外部から叩いてもらうような処理って、外部からだとインスタンスを区別する事が出来ないから やっぱ無理なんだろうか
775 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:01:06 ] PODならmemsetを使って問題ない がしかし、 > double 型やポインタ型は、これらを構成する全ビットが 0 になったとしても、 > オブジェクトの値が 0 になるかどうかは分からない てか何でクラスのメンバ全部をmemsetで初期化しようとするのか理解できん
776 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:04:21 ] C++でもデリゲート(もどき)はできるはず
777 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:12:32 ] ヤバい。Codepad.org 落ちたかもしれない 下記コードだと、ISO なんちゃら警告が出てコンパイル不能。 class Foo; typedef int (Foo::*FUNC)(); //typedef int (*FUNC)(); void test(FUNC f) { printf("%d", f()); } class Foo { private: int x; public: Foo(int a): x(a) {} int getValue() { return x; } }; int main() { Foo f(123); test(f.getValue); //test(&(f.getValue)); return 0; }
778 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:12:45 ] >>774 メンバ関数ポインタとオブジェクトのアドレスを渡してあげれば出来るよ でもまあ普通は関数オブジェクトにして渡すけど
779 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:14:03 ] >>777 メンバ関数へのポインタを得る記述は &Foo::getValue だ。インスタンスからは取れない。
780 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:16:26 ] >メンバ関数へのポインタを得る記述は &Foo::getValue だ。インスタンスからは取れない。 静的メンバとしてそれで取り出せるのは知ってたけど、やはりインスタンスからは無理か。 外から見たらそれがどのインスタンスのメンバなのかを特定出来ない(this不明)からか >>778 Invokeさせるって話ですね。それはたまに書いてます
781 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:17:33 ] >>774 boost::function
782 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:51:49 ] すいません、ごく基本的な質問かも知れませんが #include<stdio.h> int main(void) { printf("hello world!"); return 0; } というプログラムを実行すると 実行画面が表示されてすぐに消えるのですが キーを押すまで表示したまま、というのはどうすればよいのでしょうか
783 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:58:45 ] getchar(); とか?
784 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:59:29 ] >>782 VisualC++ 2005なら 「デバッグ→デバッグなしで開始」(Ctrl + F5)でいけるよ 「デバッグ開始」(F5)だとすぐに消える なぜかは分かりません。当方は仕様として認識してます。
785 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 15:01:21 ] >>775 そういうのは個別に初期化すればいいでしょ
786 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 15:01:22 ] デバッグ開始として実行すると、実際に起動してるのは IDE側だから 終了次第後始末する → 閉じる って事じゃね デバッグ無しだと起動しっぱなしになるってだけ。違うかな
787 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 15:05:34 ] >>782 exeをダブルクリックしてないか? コマンドプロンプトから呼び出せばすぐに消えないよ myapp.exeというプログラムを作ったとしたら コンパイルしたディレクトリでmyappと入力してエンターだ
788 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 12:15:00 ] >>784 >>786 デバッグなしで実行のときは、余計なお世話なことにpauseコマンド(相当)を噛ましているだけ。 デバッグ開始の場合は、止めたければ勝手に止めればいいので余計なお世話もしない。
789 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 17:14:31 ] コマンドプロンプトから起動したら消えませんでした ありがとうございます 先に言っておくべきだったと思うけどbcpadを使ってます
790 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 21:44:01 ] int a[10000000] int work[10000000]; int work2[10000000]; int main() { for(i=0;i<N_MAX;i++){ work[i] = i; work2[i] = i; } t1 = my_clock(); for(i=0;i<N_MAX;i++){ a[i] = work[i]; } t2 = my_clock(); t3 = my_clock(); for(i=0;i<N_MAX;i++){ a[i] = work2[i]; } t4 = my_clock(); printf("%f %f\n",t2-t1,t4-t3); } 質問です。以上のプログラムを実行したところ、aの配列にwork2の配列の要素を代入するほうが処理時間が早くなっています。 なぜ同じような操作を行っているのに処理速度が変わってくるのでしょうか?
791 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 21:59:23 ] >>790 原因はここに書いてない部分にある。