1 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 20:07:25 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
65 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 21:20:54 ] >>64 3つくらい
66 名前:デフォルトの名無しさん [2007/01/09(火) 11:38:54 ] MAME32をジョイスティックで動かすことをしたいのですが keybd_eventをつかっても動きません メモ帳で試してみたら、動きました 何か他の方法があるのでしょうか
67 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 13:05:08 ] constとstatic constの違いを教えてください
68 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 13:23:27 ] >>67 staticがつくかつかないかです。
69 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 13:24:44 ] >>67 それが何を修飾しているかによって異なります。
70 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 13:25:27 ] >>67 Cですか? それともC++ですか?
71 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 13:31:14 ] C++です。修飾しているのはintやdoubleです。
72 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 13:41:45 ] 前者は定数で後者は静的な定数です。
73 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 16:40:21 ] 整数リテラル0が何故、8進リテラルになるのかが分かりません。教えて下さい。
74 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 16:51:00 ] スレタイがエロ過ぎると思います。どうにかしてください。
75 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 16:57:09 ] >>73 0で始まる数値は8進リテラルと決められているからです。 従って、10進リテラルで0を表現することは(事実上)できません。
76 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 20:00:12 ] じゃ1-1で
77 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 04:38:30 ] >>73 0でも 00でも 0x0でも 意味は一緒だから気にすんな
78 名前:デフォルトの名無しさん [2007/01/10(水) 05:34:56 ] 0AUと0nmは同じ長さ
79 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 07:32:12 ] >>77 意味は違います。同じように使えるだけです。 >>78 工学屋から言わせれば、精度が違う。
80 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 17:57:07 ] int _tmain() { for(int n=0;n<=10;n++){ for(int i=0;i<=10;i++){ cout<<n<<" "<<i<<endl;} cout<<n<<" "<<i<<endl;} } とするとiが0から11まで出力されます。10じゃないのかな?なんでだろ。
81 名前:デフォルトの名無しさん [2007/01/10(水) 18:00:31 ] あげわすれました。よろしくお願いいたします。
82 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 18:02:24 ] >>80 <=以下 <未満
83 名前:デフォルトの名無しさん [2007/01/10(水) 18:09:20 ] それは大丈夫です。>80式を動かすとnについては0-10までなのですがiが0-11となってしまいます。 for構文だからi=10のときはi<=10を満たすので「cout<<n<<" "<<i<<endl;」を実行しこのときiは10となります。 その次にiを++するのでi=11となりi<=10を満たさなくなるので、i=11が出力されるはずがないと思ったのです。 なんでなんでしょうか。
84 名前:デフォルトの名無しさん [2007/01/10(水) 18:11:51 ] n i 0 1 0 2 ・・・ 0 9 0 10 0 11 ・・・ 10 1 ・・・ 10 10 10 11 となります。変だと思うのです。
85 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 18:19:16 ] >>84 2行目の >cout<<n<<" "<<i<<endl;} が余計だろう。ここのi は既に内側のforのスコープから外れてるぞ。
86 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 18:21:13 ] >>80式を動かすとnについては0-10までなのですがiが0-11となってしまいます。 >>84 の実行例はiは1-11になってるように見えるが? >>80 で書いたコードと>>84 で実行してるコードは違うだろ?
87 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 18:31:57 ] [完成] int _tmain() { for(n=0;n<=10;n++){ for(i=0;i<=10;i++){ cout<<n<<" "<<i<<endl;} //cout<<n<<" "<<endl; } } [原因] 指摘をもとに2行目を削除したところ正しく出力されました。ありがとうございました。 [謝辞] >85 ご指摘の通りでした。2行目が必要だと思っていましたが、実際には不要なものだったのですね。 >86 申し訳ないです。慌てていて>84でiが0の場合が抜けています。 みなさま迅速なご指導ありがとうございました。これで数時間悩んでいてほとほと困っていましたが 解決することが出来ました。 [結果] n i 0 0 ・・・ 0 9 0 10 ・・・ 10 1 ・・・ 10 10
88 名前:デフォルトの名無しさん [2007/01/11(木) 19:05:47 ] Cのprintfにて文字色を変えて表示させたいのですが \033[31m のような指定では無く RGB指定で細かくして表示させたいのですが そのようなことは可能でしょうか?
89 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:38:08 ] 世の中そういうことができる環境があるかもしれない。 或いは自分で作ればそういうことだってできるだろう。
90 名前:よろおね [2007/01/11(木) 22:27:20 ] 知人からソースを貰いました。 コンパイルしようとしたら $ gcc main.c main.c:6:19: stdio.h: No such file or directory main.c:7:20: string.h: No such file or directory main.c:8:20: stdlib.h: No such file or directory となりました。 「stdio.h, string.h stdlib.h も寄越せ ゴルラ!」と言って一週間。 未だに貰えません。 どうしたらいいでしょう?
91 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:03:48 ] 明らかにあなたのビルド環境が異常です
92 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:07:36 ] >>90 stdio.h, string.h stdlib.hは知人から貰うようなものじゃない。 コンパイラをダウンロード・インストールすれば付いてくるもの。 環境さえまともに整えられないのか?
93 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:14:02 ] 知人も在る場所知らない希瓦斯
94 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:16:11 ] ワロス.なんでgccがあってstdio.hがねーんだよ(w ホラヨ(w つ ftp.gnu.org/gnu/glibc/glibc-2.5.tar.gz
95 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:18:11 ] どうせ #include "stdio.h" とか書いちゃってるオチだろ。
96 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:20:47 ] >>95 その場合も、見付からなければ<stdio.h>と書いたのと同じ方法でヘッダを探すことになっており、 gccもそれに則っているから問題ない。
97 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 11:35:58 ] ↓このあと、>95 の「釣れた」宣言
98 名前:偽95 mailto:sage [2007/01/12(金) 15:21:42 ] Fish On!! かかったかかったーー!! ん?あっれぇ〜 根掛かりだ〜
99 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 16:08:14 ] わらたw
100 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 16:58:50 ] >>98 =99 かわいそす
101 名前:デフォルトの名無しさん [2007/01/13(土) 14:28:22 ] Microsoft Visual C++ 2005 で.cppのファイル開いてもビルトがでない。 どーやってコンパイルすればいいの!!
102 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 16:07:57 ] ‖ ___ ‖ / `ヽ‖ ,:' 、ゑ ,' ; i 八、 |,! 、 ,! | ,' ,〃ヽ!;、 |!| l川 l リへ'==二二ト、 リ川 !| i′ ゙、 ', ', lルl ||,レ′ ヽ ,ノ ,〉 |川'、 ,,.,.r'" ,,ン゙ `T" ! ,/ '.ノ,/| / ,!´ !゙ヾ{ | / ,' i ゙ ! ,l゙ ,r‐'ヽ-、! ', l| { `ヽ ! 「゙フ ,>┬―/ ; i,`{ / /リ川' ', ゙、 / ,/ ゙、 ゙、 ノ / ', `、 \_/ ; ゙、ヽ、 l__ ! ___〕 ,、l  ̄`‐┬―r┬‐r'´ `'‐'′ | .! | | | | .| |
103 名前:偽95 mailto:sage [2007/01/13(土) 16:09:17 ] 新規作成→新しいプロジェクト→特にソリューションディレクトリが必要なければチェック消す →プロジェクト名(好きな名前で結構)[OKを押せば勝手に指定した場所の所にプロジェクトフォルダが出来る] →OKを押して次を押す→windowsアプリケーションじゃないならプリコンパイル済みヘッダーのチェックを消す →コンソールアプリケーションチェック、空のプロジェクトチェック、そんで完了押す →左のソースファイルフォルダ右クリック新しい項目追加 →C++ファイルを選んで名前を付けて追加(C言語なら拡張子を.cにする) →ソース書いてコンパイルしてビルドしてデバッグなしで開始(デバッグするならデバッグで)
104 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 21:06:16 ] C++で文字列の先頭から、途中までの文字列が一致するか否かを判定する関数は ありますか? EX: 比較文字列 2ch 比較対象文字列(一致) 2ch close 比較対象文字列(不一致) 3ch open こんな感じで判定できるような関数なのですが・・・・・? Windows2000 VS2005 SDK
105 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 22:03:36 ] string
106 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 22:52:02 ] 不可解なエラーに悩まされています。 原因はどの辺りにあるかわかりますか? たとえば、グローバルで定義したint a、int bがあるとして、 プログラム中でa++したときに、なぜかbも一緒に++されてしまう。 aをaaaに変更してみたりその他の関係のない変数の変数名を変更してみたり、 int a=0;と定義するとエラーが出なくなることもある。 しばらくコーディングを進めると今度は違う変数同士が干渉し始める。 どの辺りに起因して同じ領域に違う変数が割り当てられてしまうのか、見当もつきません。 WinXP gcc(cygwin)
107 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:27:22 ] >>106 gccなんてクソコンパイラ使ってるからだよ。m9(^Д^) プギャー
108 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:36:02 ] >>106 m9(^Д^) プギャー
109 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:37:55 ] >>106 よくわからんで作ってることが原因だな
110 名前:106 mailto:sage [2007/01/13(土) 23:48:16 ] >>109 わかりました。基本から出直してきます。 ご返答ありがとうございました。
111 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:00:46 ] &b(a); とか?
112 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:25:42 ] doubleの要素型で、要素数が5の配列の全要素に0.0を代入して表示するプログラムが分かりません。教えて下さい。C++です。
113 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 14:06:06 ] #include <iostream> int main() { double d[5] = {0.0}; for(int i = 0; i < 5; i++) std::cout << i << " : " << d[i] << std::endl; return 0; }
114 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 15:00:16 ] >>113 ありがとうございます!けど実行すると、0が表示されてしまいます....
115 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 15:06:08 ] 確認のために0を表示するように書かれているからだ。
116 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 15:06:50 ] 0というより、0になった配列の各要素と言うべきだな。
117 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 16:12:23 ] 0 じゃなくて 0.0 を表示したいのではないかと esp
118 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 16:15:03 ] ほれ #include <stdio.h> int main() { double d[5] = {0.0}; for(int i = 0; i < 5; i++){ printf("%.1lf\n", d); } return 0; }
119 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 16:52:50 ] >>117 そうです。 >>118 すいません。それはC++の場合はどうすればいいんでしょうか?
120 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 16:57:39 ] #include <cstdio> int main() { double d[5] = {0.0}; for(int i = 0; i < 5; i++){ printf("%.1lf\n", d); } return 0; }
121 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 16:58:12 ] >>120 ありがとうございます。
122 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 17:08:17 ] d[i]
123 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 17:44:48 ] Cプラプラで0.0から1.0まで0.001おきに、その値と、その値の2乗を表示するプログラムって、どう作ればいいんですか?
124 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 17:48:56 ] >>123 まずはC++のコンパイラを入手し、お前が使ってるPCにインストールする。
125 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 20:08:02 ] C++なら_asmが使えるからアセンブリで書いてやろうと思ったけどやめた
126 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 22:47:07 ] int data[10]={0};//dataの中身を全部0で初期化 これをクラスで記述する方法ってあるんでしょうか struct a{ int data[10]; a():??{} };
127 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 23:44:50 ] a() : data() {}でできない? できないならおとなしく、コンストラクタのブロックの中でstd::fillでもするしかないな。
128 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 00:37:06 ] >>127 出来ました!こんな書き方があったとは ありがとう
129 名前:デフォルトの名無しさん [2007/01/15(月) 04:20:32 ] 画像のピクセルサイズを取得したいのですが どうすれば取得できますか?
130 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 09:05:21 ] 画像ファイルの構造を知る
131 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 15:38:57 ] 男ならwaveだろうがbmpだろうが黙ってバイナリfstream
132 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 18:29:29 ] >>129 BITMAPINFOを足がかりに
133 名前:Cはできた(過去形)人 [2007/01/15(月) 18:29:34 ] BorandC++を使ってるんですが・・・ <iostream>ファイルをオープンできません とでてコンパイルできません・・・ いったいどうすれば・・・
134 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 18:34:02 ] >>133 お前じゃどうしようもないから諦めろ
135 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 18:46:29 ] >>133 普通にググったら見落としに気づくかもよ。
136 名前:デフォルトの名無しさん [2007/01/15(月) 18:54:30 ] 分割コンパイルしたオブジェクトファイルをmain.oも含めて静的ライブラリに まとめた場合、一般にそのライブラリのみで実行ファイルをビルドすることは できるのでしょうか? GCCだとできたのですがVCやBCCだとどうなんでしょう? libfoo.aがmain.o, hoge.oで構成されている場合、GCCの例だと gcc -o exefile libfoo.a でexefileという実行形式を作成できました。
137 名前:デフォルトの名無しさん [2007/01/15(月) 18:57:51 ] 256*256の二次元配列を作りたいのですが、実行するとStack overflowとでてしまいます。 どうにか回避する方法はないでしょうか?
138 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 19:06:23 ] >>137 ヒープに割り当てる
139 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 19:10:57 ] mainを含んだ静的ライブラリってのは、 Win32のスクリーンセーバライブラリがそんな感じだな。
140 名前:137 [2007/01/15(月) 19:36:29 ] >>138 すみません。 ヒープに割り当てる方法を教えてください。
141 名前:136 [2007/01/15(月) 19:39:26 ] 今vc8で試してみたのですができませんでした。 具体的には cl /EHsc /c main.cpp lib.cpp lib /out:library.lib main.obj lib.obj cl /Feout library.lib out.objが開けないとエラーがでてしまいます。
142 名前:デフォルトの名無しさん [2007/01/15(月) 19:46:55 ] >>140 ヒープに割り当てるというのはmalloc(Cの場合)やnew(C++)などで 動的にメモリを確保することです。 あとは調べればわかるかと思います。
143 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 21:39:29 ] >>141 できたぞ。 cl /EHsc /Zl /c test.cpp lib /out:hoge.lib test.obj link /machine:x86 /entry:mainCRTStartup /out:HOGE.EXE msvcrt.lib hoge.lib /entryの代わりに/subsystem:consoleでもうまくいった。 またcl経由でリンカを呼び出してもできる。 cl /MD hoge.lib /link msvcrt.lib /machine:x86 /subsystem:console いずれにしてもLNK4001(オブジェクトファイルがない)という警告が出る。
144 名前:デフォルトの名無しさん [2007/01/16(火) 15:11:25 ] home.hiroshima-u.ac.jp/~m052291/sdk/index.cgi?event=view&num=246 どこでなにやってるか全然ワカランので、中盤以降に説明つけてください! あともう少し素人が作ったっぽくなりませんか?
145 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 16:04:06 ] >>144 それだけ素人丸出しなら充分だと思うが。
146 名前:デフォルトの名無しさん [2007/01/16(火) 22:33:51 ] Windows上で動くプログラムには仮想メモリが割り当てられてて プログラムからは仮想メモリしか見えないんだよね? じゃあメモリエディタってどうやってんの?
147 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 22:50:39 ] 適切な権限さえあればよそのプロセスのメモリだって読み書きできる(真っ先に思い浮かぶのはデバッグ用途)。 大抵は権限の設定なんてやっていないから、同じユーザのプロセスならだいたい読み書きできると思っていい。
148 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 00:14:54 ] Windowsカーネルは全部の仮想メモリを知ってるから、 API叩いて教えてもらうんだよ。
149 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 11:27:50 ] 実際に物理的なメモリを書き換えているとは限らない ひょっとするとあなたの書き換えた場所はディスク上の一部かも知れない
150 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 00:10:28 ] 質問なんですが、C++の問題集でお勧めなのはないでしょうか? 参考にしたいのでお願いします。
151 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 03:22:51 ] >>150 C/C++問題集スレ pc10.2ch.net/test/read.cgi/tech/1168663908/
152 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 13:53:15 ] >>151 ワロタ
153 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 12:08:48 ] Cの経験が少しあってC++をはじめた者です。 憂鬱なプログラマのためのオブジェクト指向開発講座(第2部第5章p116)で、 「コンストラクタを使って、定数メンバの初期化を行うことができます」 と書いてありました。定数の初期化って、定数はあらかじめ 定義されているものだと思うんですけど、 どういうことでしょう?
154 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 12:21:08 ] 定数メンバと定数は違うだろ
155 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 15:25:31 ] static const double a=1; じゃだめなのですか?
156 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 16:04:03 ] 153は非静的メンバの話だと思う。
157 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:09:46 ] >>154 >定数メンバと定数は違うだろ 定数って const int a; とかですか?
158 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:29:36 ] 憂鬱本↓ メンバ初期化の方法はLIST6のように考えるのが普通でしょう. 確かにこのように書くことは可能です.・・・しかし,これは進められる書き方ではありません.なぜならば,これでは定数のデータメンバを初期化することができないからです. クラスのメンバデータには定数も使用することができます.その初期化を行うのも当然コンストラクタということになるでしょう.しかし,コンストラクタとはいえ,やはり関数です.その中で定数を書き換えることはやはりできません. さてそれでは,別の方法で定数メンバを初期化することは出来るのでしょうか.そのような特別な方法が用意されているのでしょうか. これはそのような方法が存在します.C++では,コンストラクタがメンバを初期化するために新しい構文が設けられています.メンバの初期化はLIST7のように行います.
159 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:31:59 ] LIST6:データメンバの初期化 Person :: Person () // コンストラクタの実装部 { age = 0 ; // 年齢の初期化 name = NULL ; // ポインタの初期化 } // しかしこの方法は薦められない! LIST7:コンストラクタでのメンバ初期化 Person :: Person () : age ( 0 ) , name ( NULL ) // 正しい方法 { // 何もしない }
160 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:25:26 ] _, ._ (;゚ Д゚) …?
161 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:38:24 ] 新版も出たことだし、Effective C++ くらい買いなさい。
162 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:07:38 ] >>158 >これはそのような方法が存在します 日本語でおk
163 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:09:24 ] (これ、Visual C++のスレで質問するべきなのかもしれませんが) 標準C++というのでしょうか、windowsコンソールアプリケーションの 文法で、Visual C++のよなwindowsプログラミング(ファイル[メニュー]や ボタンを付けたいだけですが)をすることってできるでしょうか? やはりそれはVisual C++でしかできないのでしょうか? 環境はVisual C++ 2005 Express Edition使っています。
164 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:26:27 ] >>163 Visualという単語で勘違いしたのかな?VC++でコンソールアプリも書けます。 VC++でコンソールアプリを書いてもWindowsアプリを書いても、VC++の文法は同じです。 Windowsアプリの開発環境はVC++だけではありません。VB、Delphi等々色々あります。
165 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:53:02 ] >>164 返信感謝します。 (私があまり理解していないので、言葉がうまく見つかりません) 普通(?)のC++(コンソールアプリ)は、やったことがあるんですが、 windowsアプリケーションのソースを見たところ、 “ハンドル”という言葉が出てきたりして、 私が今まで勉強したC++と少し違うと思いました。 文字列に関しても、宣言が下のように違うようです。 string word @ ↓ string^ word; A winwosアプリをする場合は、新たにAのような文法を勉強しなければ ならないんですよね?