スレを勃てるまでもないC/C++の質問はここで 10
at TECH
[1からを表示]
50:デフォルトの名無しさん
09/05/15 21:15:04
>>49
Thx
slacklwareなんでlinux板で聞きます、因みにkernel-headersはインストールしているのですが
カーネルを 2.6.29.3に上げているためだと思います、 2.6.29.3用のkernel-headersをインストールしないといけないのでしょうかね?
51:デフォルトの名無しさん
09/05/15 21:15:52
>>47
ありがd
クラス覚えた手だけどこりゃ便利そうだ
52:デフォルトの名無しさん
09/05/15 21:18:50
プログラム板から、誘導されました
C言語で、linux のioポートのアクセスを行う実装を行いたくて
#include <linux/types.h>
#include <linux/config.h>
#include <asm/system.h>
include <asm/io.h>
これらのファイルがないと怒られます、どうしたらいいのでしょうか?
因みに、鳥はslacklware12.2でkernel-headersはインストールしているのですが
カーネルを 2.6.29.3に上げているためだと思います、 2.6.29.3用のkernel-headersをインストールしないといけないのでしょうか?
53:デフォルトの名無しさん
09/05/15 22:52:38
C言語で一つの処理?を終えるまでにかかる時間を計算する方法ってありますか?
CPUが100Mhzだとすると、
たとえば、*buf = 1000 とか一つ処理するのにどれくらいかかりますか?
54:デフォルトの名無しさん
09/05/15 22:54:14
1/100000000秒じゃね?
55:デフォルトの名無しさん
09/05/15 22:57:17
>52
J 釣りか ?
それくらい解決できないようではC言語を使わないでもらいたい。
昔の人は考えた、無ければ作ればいいと。
findでgrepのviだろjk.
56:デフォルトの名無しさん
09/05/15 23:01:31
>>53
コンパイルしてアセンブラのコードを見ないと。
最近のCPUは複雑だから、それでも難しいと思うけど。
57:デフォルトの名無しさん
09/05/15 23:10:21
>>56
アセンブラのコードみたらわかるというわけでもないのですね
そういうのって計算できないものなのかな
おおよその計算ができるプログラムなりあったりしないのでしょうか?
CPU作ってる人たちはそういうの計算してるんですよねやっぱり
58:デフォルトの名無しさん
09/05/15 23:20:43
大体は判るよ。CPUが指定されているのならね。
アセンブラの判る人間なら、この処理はこんなコードに落ちるから、何クロックとか推測出来る。
同じ周波数でもCPUによってかかる時間が違うから単に100MHzとか言われても答えようがない。
もっと問題なのは
*buf = 1000;
なんてのはコンパイラの最適化でどうなるか判らないことだ。
59:デフォルトの名無しさん
09/05/15 23:22:09
>>57
10年くらい前に読んだアセンブラの本にはVTuneってツールで
プロファイルしながら、アセンブラのコードを最適化する例が
乗ってたよ。
ググったら、今でも売ってるみたいなんで、そういうツールを
使えばわかるんじゃないの?
60:デフォルトの名無しさん
09/05/15 23:22:27
最速のケースと、最悪のケースは計算できるだろうけど。
あとは、CPUのシミュレータがあるからね。
61:デフォルトの名無しさん
09/05/15 23:24:21
>>58
Mhz以外に何がわかればいいのでしょうか?
計算方法としては
Cのソースをコンパイル→アセンブラ見る→CPUから計算? という感じでしょうか
62:デフォルトの名無しさん
09/05/15 23:26:20
>>58
たとえ同じCPUでも、その前のコードによってキャッシュやパイプラインの状況が
異なってくるから何とも言えないというのはある。
63:デフォルトの名無しさん
09/05/15 23:28:09
>>62
大体はわかりませんか?
たとえば10000回ループさせたとして
これくらいだと、100ms〜200msかかるとか
64:デフォルトの名無しさん
09/05/15 23:28:58
>>63
それかなりの精度の読みを要求してるなw
65:デフォルトの名無しさん
09/05/15 23:29:43
あと、いい加減sageろ
66:デフォルトの名無しさん
09/05/15 23:32:08
>63
大体は判るって言ってるだろうが。
日本語に不自由してるのか?
アセンブラ勉強しろ。その範囲で判る範囲の推測は出来る。
それより実測した方が早いがな。
67:デフォルトの名無しさん
09/05/15 23:36:45
大体は判る
その大体すら教えてくれないのにそういわれても
68:デフォルトの名無しさん
09/05/15 23:39:53
>>67
CPUすら教えてくれないのにそう言われても。
69:デフォルトの名無しさん
09/05/15 23:40:42
>>63
実測するのが早い。
実測できないのなら、MIPS値がわかれば一秒間に実行できる大体の命令数がわかる。
70:デフォルトの名無しさん
09/05/15 23:42:36
環境によって変わり過ぎる
ハードウェア等の動かない前提のものならともかく、
OSやサービスパックの有無、画面のサイズなどの描画関係やアンチウィルスソフトなんかも走ってればかなり差も出る
ってか、実測すれば??
71:デフォルトの名無しさん
09/05/15 23:47:19
そのためのプロファイラだろ
72:デフォルトの名無しさん
09/05/15 23:50:22
アセンブラで局所的にパフォーマンスどうこうって話をしてるのに、
サービスパックの有無とか安置ウイルスソフトどうこうとかって話はないだろ。
73:デフォルトの名無しさん
09/05/15 23:54:23
だよねw
74:デフォルトの名無しさん
09/05/16 00:01:32
例えアセンブラでも、>>67の書いた情報だと、
「全フットプリント合計の最悪値以下」しか答えようがないでしょ。
キャッシュやらパイプラインやら環境要因/外的要因が多すぎる。
組み込み用のMMUもないCPUを割り込み禁止で使えば、
好きなだけアセンブラから完全な精度で値を割り出せるよw
75:デフォルトの名無しさん
09/05/16 00:50:28
みんなわかりきってて言及を控えた事だから書かなくていいよ
76:デフォルトの名無しさん
09/05/16 01:15:54
unionの話ちょっと前に出てるけど
unionをどんな時に使ってるんだ?
77:デフォルトの名無しさん
09/05/16 08:09:09
上にも出てたが、最有力はネットワークのパケット関連だろ。
あとは特定のファイル形式のヘッダとか。
俺は組み込みやらんから知らないけど、メモリの制約が大きい環境では勿論メモリ節約の意味で使うだろうし。
78:デフォルトの名無しさん
09/05/16 13:17:22
インストール完了して、ライブラリなどの参照先を全て設定してあるのですが
コンパイルで3回ほどやったら固まったり
ビルドですぐに固まったりして 何度も強制終了して困っています。
何か解決策はありますでしょうか?
使用 VC++6.0
OS WindowsXP Proffesional
メモリ 4GB
CPU Core2 Duo 3GHz
です。
79:デフォルトの名無しさん
09/05/16 13:50:07
それは C/C++ の質問とは言わん。が、まあいい。
>使用 VC++6.0
これを新しくするか
>OS WindowsXP Proffesional
これを古くする。
80:デフォルトの名無しさん
09/05/16 14:14:42
>>レスありがとうございます。
新しくするというのは
VC++ 2008にするという事ですか?
81:デフォルトの名無しさん
09/05/16 14:40:06
VC++6.0は時代の遺物じゃね。
もう使い物にならん。
82:デフォルトの名無しさん
09/05/16 17:21:57
小林健一郎さんの、「これならわかるC++」と
矢沢久雄さんの「C++クラスの継承」を読み終わって
平山尚さんの「ゲームプログラマになる前に覚えておきたい技術」を読んでみたのですが
最初のプログラムって、初心者が思いつくようなものなのでしょうか?orz
初心者向けと聞いて開いてみたのですが、難しくて挫折しそうです・・・。
平山さんの本を読むために、読んでおくべき本があったら教えてください・・・。
83:デフォルトの名無しさん
09/05/16 17:26:42
読むだけじゃだめ、何か作っていかないと
84:デフォルトの名無しさん
09/05/16 17:29:36
追加、本読めば作れるようになれっると思うのはひじょーーに甘い。
簡単なものからで良いから、数を作ることが必要。
例えば、マラソンの本を1万冊読もうがマラソン選手になれるわけではない。
85:デフォルトの名無しさん
09/05/16 17:35:44
>>83-84
即レスありがとうございます。
プログラムも自分なりに作ってはいるのですが
x軸やy軸などの基本書に書いてなかった概念が出てきて
何か足りない知識があるのだろうか、と思っています。
86:デフォルトの名無しさん
09/05/16 17:37:50
まて、それは数学の知識や物理の知識で、2Dなら中学程度でOKだけど。
本当に知りたいのはなに?
87:デフォルトの名無しさん
09/05/16 17:47:14
>>86
数学の知識があればいけるのでしょうか?
私の単なるプログラムの経験不足でしょうか・・・。
目にしたことない単語が多く出てきたので、難しく感じています。
数学は大学センター試験で1A,2B両方とも80点取れる程度です。
88:デフォルトの名無しさん
09/05/16 17:53:15
>>87
なんとなくスレ違だが、>>85の例題が悪い。
>私の単なるプログラムの経験不足でしょうか・・・。
これが答え。
易しく言うと、ある現象、キャラガX軸方向に歩いていきます。とした場合。
あなたなら、簡単に計算式が予想できると思う。しかしだ、
それをプログラムとした場合のモデル化が予想できない状態である。
この解決策は、ずばり、経験だけ。あなたなら経験すればすぐ作れるようになる
89:デフォルトの名無しさん
09/05/16 17:54:24
ゆとりの理想像にだいぶ近いな
90:デフォルトの名無しさん
09/05/16 17:56:46
>>88
レスありがとうございます。
やはり経験不足なのですね。
色々なプログラムに触れて勉強したいと思います。
どうもありがとうございました。
91:デフォルトの名無しさん
09/05/16 18:10:06
宿題スレの問題を自分の力だけで解けば、糸口が見えてくると思う。
解けない時は、他の人の回答を 手打ちで入れる。
コピペは駄目ぜったい
92:デフォルトの名無しさん
09/05/16 18:40:04
ゲーム作りたいのなら、HSPあたりがいいんじゃない?
93:デフォルトの名無しさん
09/05/16 23:41:39
誕生日を祝ってくれるプログラムを作りましたが何も表示されません。
やはり誰も祝ってくれないのでしょうか。
int main(void){
int i;
for(i=0;i>100;i++)
printf("お前、お誕生日おめでとう。\n");
return 0;
}
94:デフォルトの名無しさん
09/05/16 23:43:28
>>93
釣り?マジ?コマンドラインからそのプログラムを起動しろ
95:94
09/05/16 23:46:16
>>93
その前に
i>100
この停止条件がおかしいじゃん。
96:デフォルトの名無しさん
09/05/16 23:48:54
俺が祝ってやる
int main(void){
while(1) {
printf("お前、お誕生日おめでとう。\n");
return 0;
}
97:デフォルトの名無しさん
09/05/16 23:49:54
あーーーーーーーっ } 何も言うな orz やはり祝えなかった
98:デフォルトの名無しさん
09/05/16 23:51:05
ありがとうございます。
しかしこういうエラーが出るんです。
'int' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
99:デフォルトの名無しさん
09/05/16 23:53:37
まじで、コマンドプロンプトなのか? ちょっとOS何か言ってみ
100:デフォルトの名無しさん
09/05/16 23:57:08
OSはウインドウズです。
もしかしてウインドウズだとできないんですか?
101:93
09/05/17 00:01:30
解決しました。
一年後よろしくお願いします。
102:デフォルトの名無しさん
09/05/17 00:01:36
>>100
んなわけがない
まさかソースを直接実行してないよね?
コンパイルはしてるよね?
103:デフォルトの名無しさん
09/05/17 00:10:25
コンパイルはコマンドラインでするんですよね?
ちゃんとプログラムを打ち込んでるつもりなのですが・・・
104:デフォルトの名無しさん
09/05/17 00:12:42
DOS窓でコンパイルか、なにC使ってるか疑問だ
105:デフォルトの名無しさん
09/05/17 00:13:03
>>98
拡張子はcだぞ。batじゃ無いぞ
106:デフォルトの名無しさん
09/05/17 00:14:41
おまえら全力で釣られてていいの?
107:デフォルトの名無しさん
09/05/17 00:15:50
int main(void){
printf("今日、僕ね、万個からこんにちはしたんです。\n");
main();
return 0;
}
108:デフォルトの名無しさん
09/05/17 00:24:22
コマンドラインで
int main(void){
って入力するとそのエラーになるなw
109:デフォルトの名無しさん
09/05/17 09:24:08
>>107
関係ないけど
>万個からこんにちはしたんです
「中に誰もいませんよ」を思い出した。
110:デフォルトの名無しさん
09/05/17 11:59:56
C++にて
unsigned x=10;
と言ったらxの型は何になるんでしょうか?
unsigned intですか?
111:デフォルトの名無しさん
09/05/17 12:04:29
yes
112:110
09/05/17 12:09:42
>>111
unsigned intと書かずに
unsignedとだけ書くメリットは短い以外に何かありますか?
今後の互換性とか何か?
113:デフォルトの名無しさん
09/05/17 12:12:59
なんのメリットもない気がする
114:デフォルトの名無しさん
09/05/17 12:32:51
省略かっこいい 俺すげー(゚∀゚)神のヨカーンな気分にひたれる
115:デフォルトの名無しさん
09/05/17 12:39:46
ギャル語みたいなもんか
116:デフォルトの名無しさん
09/05/17 12:48:36
R&K を厨二病だなんて言ってやるな。
117:110
09/05/17 12:56:34
まあ確かに
long intと書かずにlongで済ませたりしますが、そんな感じですか。
ありがとうございました。
118:デフォルトの名無しさん
09/05/17 13:07:04
ポインタ → 整数型(64bit) → ポインタの変換って仕様的に保証されていますか?
C で確保したリソースを他システムにハンドル値として渡し、他システム側からの
解放命令やセッション中断で解放したいんですが。
119:デフォルトの名無しさん
09/05/17 14:23:34
>>118
reinterpret_cast
120:デフォルトの名無しさん
09/05/17 14:28:23
thankyou
121:デフォルトの名無しさん
09/05/17 16:44:31
整数型への相互変換自体は保証されているが、それが64bitというのは保証されて無い
というのが建前で
そのためにわざわざintptr_tとかUINT_PTRとかが用意されているんだけど
まあC以外との通信なら仕方ないかな。
既に環境依存だし、64bitってのも問題ないんだろう。
キャストの方法(構文)はどうでもいい。
122:デフォルトの名無しさん
09/05/18 21:41:16
テキストの改行コード \r \n を削除して
バイナリファイルとしてファイルに出力後
メモ帳でみると1024文字目で改行されて表示されるのです
バイナリで開くと改行コードは取り除かれているのですが
これはWindowsのメモ帳の仕様でしょうか?
123:デフォルトの名無しさん
09/05/18 21:45:45
コマンドプロンプトから type [ファイル名] で改行されていなかったらメモ帳の仕様
124:デフォルトの名無しさん
09/05/18 23:03:54
質問です。
・・・
俺:「RSA暗号で暗号化されているので安全です」
上司:「RSA暗号とは?」
俺:「素数を使った暗号なのですが・・・要するに解読しようと思ったら何万年もかかってしまうから、
実際には解読しようと試みる人はいないだろうという意味で安全な暗号なのです。」
上司:「高速なコンピュータを使ったら解けてしまうのではないか?」
俺:「TOP500という世界で一番速いコンピュータのリストがあるのですが、その上位のコンピュータでも私たちが生きている間には解けませんよ。
まぁ、量子コンピュータなんかがあれば一瞬で解けてしまうと聞いたことがありますが、幸か不幸か量子コンピュータをまだ誰も完成させていません。」
上司:「でもお前が知らないだけかもしれない」
俺:「いえいえ、量子コンピュータなんかができたらすごいニュースになりますよ」
上司:「ほかの企業や組織が秘密裏に作っていたりしたらお前にわかるのか?」
俺:「・・・」
↑の「俺」がRSA暗号が安全だと上司を説得するにはこの後どのように続ければ良いでしょうか?
正論でお願いします。
125:デフォルトの名無しさん
09/05/18 23:09:04
「他の企業でも積極的に使われていますよ」
126:デフォルトの名無しさん
09/05/18 23:09:34
>>124
100%開かない鍵のかかった扉は、もはや誰にも明けられない扉だと思わなければなりません。
それと同じで、正当な手順で暗号を解除して元に戻すことが出来るようにしておく以上、
100%の確率で不正な解除を防げるようなことはありえません。
現行の規格で利用可能な現実的な意味で安全な暗号なんです。
これでどうだ?
つーかスレちがいじゃね?
127:デフォルトの名無しさん
09/05/18 23:42:44
>>124
2048ビット値の素因数分解してもらえ
もしくはできるプログラムを書いてもらえ
128:デフォルトの名無しさん
09/05/18 23:45:49
上司:「でも俺が書けないだけかもしれない」
129:デフォルトの名無しさん
09/05/18 23:48:41
つい最近始めた者です。
知り合いのサンプルコードをみてみると
グローバル変数に
OBJ gPlayer;
という欄があったのですが、これはどういう変数なのでしょうか?
130:デフォルトの名無しさん
09/05/18 23:52:56
OBJ型のgPlayerという名前の変数です
131:デフォルトの名無しさん
09/05/18 23:56:48
OBJ型っていうのが本に書いてないんですが
どういう型なんですか?
132:デフォルトの名無しさん
09/05/19 00:00:44
学校でUNIXでC++やってるんですが、
どうやってプログラム書く画面開くんですか?
lsとか色々入れてたんですが、どこに何を入れればテキストエディタ開けますか。
どうすれば、コンパイルかけれますか?
133:デフォルトの名無しさん
09/05/19 00:03:12
>>124
おまえは本当に俺の上司なのか?
134:デフォルトの名無しさん
09/05/19 00:06:35
>>132
先生に聞け。
135:デフォルトの名無しさん
09/05/19 00:06:52
>>131
サンプル内で定義されてる型だろ
136:デフォルトの名無しさん
09/05/19 00:15:47
>>134
教えてくださいよorz
137:デフォルトの名無しさん
09/05/19 00:22:26
>>136
プログラムを書く画面はviで開くよ。
138:デフォルトの名無しさん
09/05/19 00:22:45
>>135
なるほど
探してみます
ありがとうございましたー
139:デフォルトの名無しさん
09/05/19 00:22:47
>>132
lsとか打ち込む画面で、viと打ち込めばエディタが立ち上がる。
プログラム打ち込んだら、
cc プログラム
でコンパイルできる。
140:デフォルトの名無しさん
09/05/19 00:39:19
>>124
「見つけた人はCIAとFBIから消されますので、公的には発表できません。ですから安心です」
とでも言っておけ。
141:デフォルトの名無しさん
09/05/19 00:49:46
つまんね
142: ◆ZtXjKqCmiQ
09/05/19 05:38:02
>>132
% vi hello.c (プログラム)と打ち込めばviエディタが立ち上がる。
[a]または[i]プログラム main(){} と打ち込んだら、
[Esc][:][w][q][Enter] でエディターを終了する。
% cc hello.c (プログラム)でコンパイルできる。
143:デフォルトの名無しさん
09/05/19 10:11:12
バカな上司は持ちたくないですな
144:デフォルトの名無しさん
09/05/19 15:41:16
DOS窓に出力したいんですが、どうすればいいのですか?
145:デフォルトの名無しさん
09/05/19 16:05:40
>>144 = >>132 か?何処まで出来た?
146:デフォルトの名無しさん
09/05/19 20:14:59
AllocConsole
147:デフォルトの名無しさん
09/05/19 20:16:41
HTMLを解析するライブラリはないでしょうか?
言語はC/C++です
148:デフォルトの名無しさん
09/05/19 20:38:47
久しぶりにプログラムを行ったらすごく基本的なところで躓きました
double x;
x=2/5;
printf("%f\n",x);
この結果が0.0000になります
もちろん0.4000にしたいのですが何が悪いんでしょうか?
149:デフォルトの名無しさん
09/05/19 20:54:59
>>148
x = 2.0 / 5/0;
150:デフォルトの名無しさん
09/05/19 20:55:41
>>149
まちがえた。
x=2.0/5.0;
151:デフォルトの名無しさん
09/05/19 21:53:51
今ゲームや単純な練習用プログラムを作ってるんですが、
どこからどこまでクラスを使うべきか、等がよくわかりません
○○の場合は△△を使うのが良い、というようなことを書いてあるサイトなどはありますか?
152:デフォルトの名無しさん
09/05/19 21:57:26
>>151
デザパタの本でも読めばいいんじゃね?
って思ったけど、本読んでも試行錯誤した経験がないとピンとこないかもしれない。
153:デフォルトの名無しさん
09/05/19 21:59:32
OOPで作るなら、全部オブジェクトでつく霊
154:デフォルトの名無しさん
09/05/19 22:10:05
>>152
ありがとうございます
作りながらそういう分野も勉強してみます
155:デフォルトの名無しさん
09/05/20 00:50:51
float型の変数の値をRS-232で送りたいので8bitずつに分けたいんですが、どうすればできますか?
ビットシフトや論理積とろうとしてもエラーがでてしまいます。
156:デフォルトの名無しさん
09/05/20 00:52:50
union {
flaute fdat
struct {
char cdat[4];
}
} udat;
157:デフォルトの名無しさん
09/05/20 01:28:14
ありがとうございます。unionで出来ました。unionってこう使うものだったんですね
でも、何故structでchar cdat[4]を括ってるのか分かりません。何故ですか?
158:デフォルトの名無しさん
09/05/20 03:47:29
IDAという解析ツールのver5.2の体験版が欲しいんですが、誰か持ってませんか?
159:デフォルトの名無しさん
09/05/20 04:17:27
製品版買え
160:デフォルトの名無しさん
09/05/20 09:08:34
>>157
別に括りたくなければ括らなくていいよ。それと、unionを使うことは環境依存という修羅の道に進むことだと言うこともお忘れなく。
# 尤も、float値をバイナリのままシリアル伝送しようと言う時点で既に修羅の道だけど。
161:デフォルトの名無しさん
09/05/20 09:41:13
>>155
memcpyでいいじゃん
162:デフォルトの名無しさん
09/05/20 09:42:14
int i = *(int*)&f;
163:デフォルトの名無しさん
09/05/20 09:45:50
>>161
このケースでどのようにmemcpy()を使うのか、詳しく。
164:デフォルトの名無しさん
09/05/20 09:54:42
できた
unsigned char c[sizeof(float)];
float f;
f = 10000000.0f;
memcpy(c, &f, sizeof(f));
for (int i=0; i<sizeof(c);i++) {
printf("%#x,", c[i]);
}
165:デフォルトの名無しさん
09/05/20 10:13:59
memcpyしなくてもできた
float f;
f = 10000000.0f;
for (int i=0; i<sizeof(f);i++) {
printf("%#x,", ((unsigned char*)&f)[i]);
}
166:デフォルトの名無しさん
09/05/20 10:21:42
>>124
団塊世代の上司ってそんな感じのやつが多いよなあ。
解りもしないくせに説明しろだの言ってくるから困る。
解るためには自分で理解しようという努力が必要なのにその努力もせずに、
自分が理解できないのは説明しているやつが悪いからだ、と責任の押しつけまでしてくることもある。
んで結局は他の何人かが良いと思うか悪いと思うか聞いて直感で判断するわけなんだが、
解らないなら最初からそうしろ、と思うわけなんだよ。
結局のところ、団塊世代は対抗意識が非常に強くて教育者あるいは指導者しての能力が致命的に欠落していると言わざるを得ない。
167:デフォルトの名無しさん
09/05/20 10:25:30
ろくに説明もできないのに何言ってんだか。
内容が知りたいわけじゃなくて、当人がちゃんと理解してるか判断するために
説明させてるんだよ、たぶんw。
168:デフォルトの名無しさん
09/05/20 10:33:30
新しい暗号技術でも開発しろというのか?
169:デフォルトの名無しさん
09/05/20 10:45:23
>>167
つまり部下を信用していないということか。
社内にまで敵を作って大変ですね。
どうせムズカシイ理論とかは理解できないんだから、せめて成果で判断すりゃいいのにね。
最初は小さいことから成果を積ませて、だんだん大きいことをやらせれば良いのに。
170:デフォルトの名無しさん
09/05/20 11:08:12
>>164>>165
わざわざコピーする理由は? 元質は転送が目的なんだから、コピーしなければいけないなんて要件ないよね。
171:デフォルトの名無しさん
09/05/20 11:12:52
>>170
だからコピーやめたやーん
172:デフォルトの名無しさん
09/05/20 11:13:57
わざわざunionにする理由は? 元質は転送が目的なんだから、unionにしなければいけないなんて要件ないよね。
173:デフォルトの名無しさん
09/05/20 11:17:51
で、コピーするコストを掛ける理由は?
174:デフォルトの名無しさん
09/05/20 11:18:39
頭悪いな
175:デフォルトの名無しさん
09/05/20 11:21:20
またメモリ節約厨か
176:デフォルトの名無しさん
09/05/20 11:22:11
>>173
charの配列にコピーすれば取り出せるんじゃね?
って思ったけど、じゃあcharにキャストすればいいんじゃね?
という具合に思考が遷移したんだよ。
ごめんよ。
177:デフォルトの名無しさん
09/05/20 12:05:38
>>167
いや、技術的に正確かどうかなんてどうでもいいんだよ。
納得させられるかどうかだけが問われる。
178:デフォルトの名無しさん
09/05/20 12:08:56
>>177
だから、単に自分の権威を見せつけたいというのと対抗意識の現れでしかないんだよ。
179:デフォルトの名無しさん
09/05/20 12:12:13
団塊世代は技術もなければ精神性も低い。
社会のゴミですね。
180:デフォルトの名無しさん
09/05/20 12:14:42
>>178
うん、そうかもね。
だから?w
それで出世あきらめるの?
181:デフォルトの名無しさん
09/05/20 12:17:26
>>180
技術盗んだら海外におさらばするつもり
182:デフォルトの名無しさん
09/05/20 12:18:53
もう俺が悪いって事でいいからけんかはよせ
183:デフォルトの名無しさん
09/05/20 12:26:22
あーあ 団塊世代のせいでまた人材が日本から流出していく。
さすが社会のゴミ 国賊 団塊世代は日本をつぶす気か
184:デフォルトの名無しさん
09/05/20 12:30:53
何でも他人のせいにするところはどっかの民族とそっくりだな。
185:デフォルトの名無しさん
09/05/20 12:40:46
>>183
団塊世代が悪いかどうかは知りませんが、うちの会社でも団塊世代の天下りを受け入れない方針になったみたいですよ。
まぁ、最近の世論的に天下りはまずいからでしょうが。
186:デフォルトの名無しさん
09/05/20 16:43:34
Windows上でLinuxを起動させたいのですが
VMwareソフトウェアのどのシリーズを選んだらいいのでしょうか?
187:デフォルトの名無しさん
09/05/20 16:44:38
vmware serverをダウンロードしてインストールしる
188:デフォルトの名無しさん
09/05/20 17:14:03
ようしゃなく英語やったorz
189:デフォルトの名無しさん
09/05/20 17:18:15
日本人のくせに英語もできないのか
190:デフォルトの名無しさん
09/05/20 18:17:16
敵性言語として長く使用を禁じられていたので…
191:デフォルトの名無しさん
09/05/20 19:13:14
じゃぁ なでしこでWMwareと同レベルのものを作ってください
192:デフォルトの名無しさん
09/05/20 19:15:49
今は属国なんだからしっかりしる!
193:デフォルトの名無しさん
09/05/20 22:47:50
#include <iostream>
using namespace std;
int main(){
int tmppl;
cin>>tmppl;
int const pl=tmppl;
int php[pl];
return 0;
}
あらかじめ数字を入力して変数tmpplに入れておき
const plの初期化の際にtmpplを使おうと思ったのですがコンパイルエラーが出ます
これは無理なんでしょうか?
また配列の要素数をキーボードで入力した数字で決めたいのですが、どうすればよいでしょうか?
194:デフォルトの名無しさん
09/05/20 22:54:38
>あらかじめ数字を入力して変数tmpplに入れておき
>const plの初期化の際にtmpplを使おうと思ったのですがコンパイルエラーが出ます
>これは無理なんでしょうか?
無理です
>また配列の要素数をキーボードで入力した数字で決めたいのですが、どうすればよいでしょうか?
std::vector
195:デフォルトの名無しさん
09/05/20 22:58:06
int *php=new int [pl];
196:デフォルトの名無しさん
09/05/20 23:07:30
>>194>>195
ありがとうございます!
初期化と代入の違いが何となく分かりました
197:デフォルトの名無しさん
09/05/21 00:31:36
それは初期化とか代入の話じゃなくて
配列の添え字はコンパイル時定数でなければならないという仕様の話じゃないのかい?
っていうか、前にもまったく同じ回答をした気配がする。
198:デフォルトの名無しさん
09/05/21 03:35:38
extern就職誌というのを知らなかったので試してみたら疑問がでました。
(main.cpp)
#include <iostream>
int global = 100;
extern void func(); //ココをexternとっても動作する
int main() {
std::cout << ::global << std::endl;
::func();
return 0;
}
(another.cpp)
#include <iostream>
extern int global;
void func() {
std::cout << ::global << std::endl;
}
俺の理解している範囲ではexternをつけると「この変数もしくは関数はグローバルだ。ただし定義自体はこのファイルでなくて
別のソースファイルでしているから気をつけろ。」ということなのだが、上記のソースではどうも動作が違う。
最初にメイン関数内でグローバル変数のglobalを表示するのはいいだろう。
次にグローバル関数のfuncに突入するのだがfuncはexternがついているので別ファイル、すなわち
another.cppで定義されている。それで実行は可能なのだが試しにメインのextern void func()からexternをとってみた。それでも
動作したのだが、なんで動くんだ?
199:デフォルトの名無しさん
09/05/21 03:57:19
>>extern就職誌
素晴らしい
200:デフォルトの名無しさん
09/05/21 03:59:50
で、とりあえず、externは、「この名前がグローバルだ」とするためのもの。
そのコンパイル単位で定義されているかどうかは関係ない。
それと、関数はデフォルトでextern。
つまり、staticを付けないで宣言(定義も)されたものは、全てexternと同等となる。
201:デフォルトの名無しさん
09/05/21 04:00:00
海外転職誌みたいだな。
202:デフォルトの名無しさん
09/05/21 04:00:17
本題に答えろ
203:デフォルトの名無しさん
09/05/21 04:07:44
URLリンク(eow.alc.co.jp)
通勤医師の就職誌か。
204:デフォルトの名無しさん
09/05/21 04:12:30
おまえ、辞書引いたのか。。
205:デフォルトの名無しさん
09/05/21 08:10:30
>>200
んー、よくわからんのですがとりあえず関数はおいておいて変数については
「この変数はグローバルだ。ただし定義自体はこのファイルでなくて 別のソースファイルでしているから気をつけろ。」
この定義は間違っていますか?それとも合っている?今、同じソースファイルで宣言だけでなく定義もしたらエラーに
なったのですが。。わかりやすい説明モトム
(main.cpp)
#include <iostream>
extern int global;
int global = 4;
void func();
int main() {
std::cout << ::global << std::endl;
::func();
return 0;
}
(another.cpp)
#include <iostream>
void func() {
std::cout << ::global << std::endl;
}
206:デフォルトの名無しさん
09/05/21 08:20:02
どんなエラーだよ
まさか宣言しないシンボルを使おうとかしてないよな
207:デフォルトの名無しさん
09/05/21 08:24:49
another.cppの中ではglobalが何者かわからん。
208:デフォルトの名無しさん
09/05/21 08:45:54
動けばいいんだよ。動けば。
209:デフォルトの名無しさん
09/05/21 11:26:55
コンパイルできない なんでか教えて
#include <iostream>
class Point {
private:
int m_x;
int m_y;
public:
Point(int x = 0, int y = 0): m_x(x), m_y(y) {}
void show() {
std::cout << "m_x = " << m_x;
std::cout << ", m_y = " << m_y << std::endl;
}
Point *operator+(Point *p) {
m_x = m_x + p->m_x;
m_y = m_y + p->m_y;
return *this;
}
};
int main() {
Point *p1 = new Point(3, 4);
Point *p2 = new Point(5, 8);
p1->show();
p2->show();
Point *p3;
p3 = p1 + p2;
p3->show();
return 0;
}
210:デフォルトの名無しさん
09/05/21 11:50:47
>>209
Point *operator+(Point *p) {
...
return this;
}
p3 = *p1 + p2;
コンパイルするだけならこう変更する
211:デフォルトの名無しさん
09/05/21 11:53:23
ありがとうございます
仮にp3 = p1 + p2;
を計算させたい場合は関数定義はどうすればいいですか?
212:デフォルトの名無しさん
09/05/21 13:01:54
ポインタ演算をオーバーロードするのはオススメできない
どうしてもやりたいなら「フレンド関数 オーバーロード」あたりでぐぐれ
あと補足だけど>>210はp1==p3になるから気を付けてね
213:デフォルトの名無しさん
09/05/21 15:22:46
了解しました。
214:デフォルトの名無しさん
09/05/21 16:32:56
std::cout << "ABCDEFGHIJKLMN";
std::cout << "\r12345\n";
とすると12345ABCDEFGHIJKLMNと表示される。
\rは復帰、現表示位置がその行の先頭に移動する。
というのはわかるが、一体何の役に立つんだこれ?
マジで使ったことある人いたら教えてくれ
215:デフォルトの名無しさん
09/05/21 16:40:09
歴史的遺物
216:214
09/05/21 16:41:05
興味程度にどんな歴史的遺物か教えてくれ
217:デフォルトの名無しさん
09/05/21 16:42:37
コマンドライン上で簡易進捗バー出すのに便利。
218:デフォルトの名無しさん
09/05/21 16:49:36
>>205
externは、別のファイルで定義しているリソース(変数とか)を
このファイルでも流用するよ、っていう宣言。
C++では、変数名・関数名などは、その変数・関数を使用するより前に、
それが何なのかを同じファイル中でコンパイラに教えてやらないとエラーになる。
お前さんのソースの中で、グローバル的に使用されているのは、
void func()とint globalの2つ。
func()を使用しているのはmain.cppだが、ここではfunc()を使用するより
前に
void func();
と宣言してあるから無問題。
一方、another.cpp内で使用されているglobalは、定義はmain.cppでしているが、
another.cpp内で宣言していない。
だからコンパイラはanother.cppのglobalという識別子が何なのかという
情報を教えてもらってないのでエラーになる。
219:デフォルトの名無しさん
09/05/21 16:52:01
歴史というなら、それこそ5,60年代とかに遡れるんじゃね?
Wikipedia項目リンク
220:デフォルトの名無しさん
09/05/21 17:05:44
>>214
つか、それ12345FGHIJKLMNって表示されないか?
処理系依存なんかな。
221:デフォルトの名無しさん
09/05/21 21:03:52
すまん質問させてもらう
void *operator new(size_t size,const char *pname, int nline );
#define new new(__FILE__, __LINE__)
とnewを実行したソース名と行数を取ってるんだが
これのdelete版が出来ない
もしかしてdeleteの方は無理?
STL使ったら、妙なdeleteが増えて特定したいんだ
222:デフォルトの名無しさん
09/05/21 21:43:31
>>220
処理系っつーか、出力装置 (と、その状態) による。
223:デフォルトの名無しさん
09/05/21 22:21:07
MFCを使ってライブラリを利用するのと
SDKで一からアプリケーションを作成するのは
どちらがいいでしょうか?
224:デフォルトの名無しさん
09/05/21 22:27:33
MFC。間違いない。マクロやキャスト使いまくりで興奮する。
225:デフォルトの名無しさん
09/05/22 00:48:32
最初のうちはSDKで必死になって窓の基本を覚え、その後MFCをさわって逝く
まあ俺のことだが
226:205
09/05/22 01:07:35
>>218
やっと理解できたー!有難う。
というわけで俺んなかでの結論;
「extern就職誌をつけられた変数・関数はこのファイルでこれから使うけどどっか別のソースファイルで
指定されてるからね!ちなみに関数のプロトタイプがあるとしたらそれはextern就職誌つけなくてもそれは
externとみなされてるから、別のファイルで指定されてるかもしんないし、ひょっとするとこのファイルの
後で定義されてるかもしんない」
という感じか。
なんか認識にまだ問題有ったら指摘して
227:デフォルトの名無しさん
09/05/22 11:00:27
就労意欲は汲み取れた。
228:デフォルトの名無しさん
09/05/22 11:55:10
ワロタ
229:デフォルトの名無しさん
09/05/22 15:31:37
まずはexternなしでソースを書いてコンパイルしてエラーが
出たらexternをつければよい
230:デフォルトの名無しさん
09/05/22 16:45:03
そもそもexternって使う機会あんまなくないか?
231:デフォルトの名無しさん
09/05/22 17:56:56
グローバル変数
232:デフォルトの名無しさん
09/05/22 17:59:49
グローバル変数そのものをほとんど使わないからな
233:デフォルトの名無しさん
09/05/22 18:32:07
グローバル変数を使うとしても、
初期化の問題を恐れてほとんど全部
関数スコープ内でのstatic変数の参照の呼び出しにしちゃうし
(つまり結局グローバルスコープではない。)
。
234:デフォルトの名無しさん
09/05/22 18:39:49
グローバル変数でもグローバル変数を入れるクラスを作るからね
235:デフォルトの名無しさん
09/05/22 19:22:42
グローバル変数がグローバル関数になり、グローバル関数がグローバルオブジェクトになるわけですね。
236:デフォルトの名無しさん
09/05/23 09:48:22
template <int N> foo bar(Hoge hoge1, Hoge hoge2, … , Hoge hogeN)
みたいな感じでtemplate <int N>のNに対応して引数の数を変える関数とかって標準で作れますか?
237:デフォルトの名無しさん
09/05/23 10:04:52
多重定義しかありません
238:デフォルトの名無しさん
09/05/23 12:05:47
可変引数リストじゃだめなんだろうか
239:デフォルトの名無しさん
09/05/23 12:21:57
Cを使ってlsライクなプログラムを作ろうとしてて、自分の環境下で動いているlsコマンドの動作を元に作ろうと思ってるんだけど
ls-オプションの動作のCで書かれたソースはコンピュータ内にあるのでしょうか?
240:デフォルトの名無しさん
09/05/23 12:38:52
引数の個数が変化すれば bar() の中身も変える必要があるしね
241:デフォルトの名無しさん
09/05/23 12:48:05
>>239
lsは、Coreutilsに含まれているはずだから
URLリンク(www.gnu.org)
から手に入れることができるはずだよ
242:デフォルトの名無しさん
09/05/23 13:22:25
今加速度センサから値を得て速度を出してるんですが、ノイズや誤差の影響で
加速度を積分した値が静止させても0に戻りません。
そこで出来るだけ正確に無理矢理0に戻そうとしているんですが、何かいい方法ありませんか?
あと、このようなフィルタ処理?とかを扱ってるスレってありますか?
243:デフォルトの名無しさん
09/05/23 15:12:40
getopt
244:デフォルトの名無しさん
09/05/23 18:32:35
C/C++でHTMLのパーサってないでしょうか?
245:デフォルトの名無しさん
09/05/23 21:26:05
なんでop[]は引数をひとつしか取れないようにしたんだろう
246:デフォルトの名無しさん
09/05/23 21:34:12
>>245
ハゲに聞いてくれ
247:デフォルトの名無しさん
09/05/23 21:45:27
>>245
C++はPascalじゃないよ
[a, b]なんて書き方はないから
248:デフォルトの名無しさん
09/05/23 21:53:10
何をブチ込んでもいいんだから
気が済むまでメンバ変数詰め込んだクラスを引数にとる[]を定義すればいいじゃないか
249:デフォルトの名無しさん
09/05/23 22:03:42
delete a, b;
とかやるのと一緒だな>>247
250:246
09/05/23 22:09:52
>>247
別に>>245はPascalとごっちゃにしているわけではないだろう。
オペレータオーバーロードとしては[a, b]の形も認めてもいいんじゃないかって
>>245は言いたいんじゃないの?
251:デフォルトの名無しさん
09/05/23 22:24:41
C++はカンマ演算子の意味が違うから無理
関数呼び出しはむしろ特別な場合
252:246
09/05/23 22:28:16
>>251
そりゃ知っているけどさ、
出来たら便利じゃない。
今からじゃ互換性の関係があって無理だけど、
最初の段階で可能であるように仕様を定めておけばよかったのでは。
・・・ということも踏まえた上で、
だから俺は「ハゲに聞いてくれ」と言ったのだ。
253:デフォルトの名無しさん
09/05/23 22:31:00
C言語で連立方程式を解くにはどんな方法がありますか?
2次方程式だけじゃなく3次4次と応用が利くようなやり方で
254:デフォルトの名無しさん
09/05/23 22:32:35
>>253
Gaussの消去法でぐぐれ
255:デフォルトの名無しさん
09/05/23 22:35:21
あほか
ガウス法は一元一次方程式にしか使えん
反復法なら使える
256:デフォルトの名無しさん
09/05/23 22:35:38
もしかして: ガウスの消去法
257:デフォルトの名無しさん
09/05/23 22:36:27
掃き出し法だろ常考
258:デフォルトの名無しさん
09/05/23 22:45:46
お前ら・・・(汗
3次とか4次にも使えるようにって書いてあるのが読めないのか?
259:デフォルトの名無しさん
09/05/23 22:46:09
Gauss-Seidel反復法マジオススメ
260:デフォルトの名無しさん
09/05/23 22:57:23
反復法で10万次方程式解いて悦にひたるのがマイブーム
261:デフォルトの名無しさん
09/05/23 23:02:55
long num=100;
このとき
++(++(++(++num)));
って動作は未定義になりますか?
一つの式の中で値が複数回変更されているように見えるのですが。
262:デフォルトの名無しさん
09/05/23 23:04:42
>>261
ならない
カッコがついているので副作用完了点がカッコの中で終了するから
263:261
09/05/23 23:14:35
>>262
となると、自作クラスの前置インクリメント演算子のオーバーロードの返り値は、
const参照で*thisを返すのではなく
非constな参照で*thisを返すべきなのですね。
ありがとうございました。
264:デフォルトの名無しさん
09/05/23 23:15:13
>>261
そもそも
++(++foo)
は、++fooが評価後に値なので、++を作用させることができない気がするのだが
これがC++の参照返す++演算子のオーバーロードならどうなるか知らないけど
265:261
09/05/23 23:19:51
>>264
でも一応
long num=100;
++(++(++(++num)));
はコンパイル可能です。
266:デフォルトの名無しさん
09/05/23 23:20:04
Cでは前置も後置も値のコピーを返すけど
C++の前置は自身を左辺値として帰すので有効。
267:デフォルトの名無しさん
09/05/23 23:24:35
ああ、cとc++では扱いが違ったのですね。
c++脳なので知りませんでした。
268:デフォルトの名無しさん
09/05/24 10:29:25
HTMLパーサ自作できたのだわ
1時間もかからなかったのだわ
こんなに簡単なのでググってもでないわけだわ
JAVA, Ruby でパーサ使ってる奴って・・・
269:デフォルトの名無しさん
09/05/24 12:02:03
+は可算演算子だよね。
では%は何演算子と呼べばいい?
270:デフォルトの名無しさん
09/05/24 12:05:10
剰余演算子
271:デフォルトの名無しさん
09/05/24 12:14:19
>>268
天才だな
272:デフォルトの名無しさん
09/05/24 12:46:43
よく言われる
273:269
09/05/24 13:00:27
>>270
ああなるほどね。
ありがと。
274:デフォルトの名無しさん
09/05/24 13:14:03
そこらへんのパーサって非標準(タグ閉じ忘れとか含め)のHTML読めるの?
275:デフォルトの名無しさん
09/05/24 14:24:58
STLの投げる例外の一覧みたいなサイトってありますか?
276:269
09/05/24 14:39:30
+num
や
-num
といった、符号をあらわす演算子はなんて言えばいい?
単項演算子じゃおかしいし、符号演算子とか??
277:デフォルトの名無しさん
09/05/24 14:44:18
性符号・フフ郷
278:デフォルトの名無しさん
09/05/24 14:51:04
>>277
サンクス!
279:デフォルトの名無しさん
09/05/24 17:02:00
int foo(bool arg1, bool arg2)
{
if(arg1){return 1;}
else if(arg2){return 2;}
else return 3;
}
この関数をこれ以上速く記述することって可能でしょうか?
例えばelseを無くしたりすることによって。
280:デフォルトの名無しさん
09/05/24 17:15:45
速く記述する、ってどういうこと?
短くの間違い?
281:デフォルトの名無しさん
09/05/24 17:19:50
>>279
int foo(bool arg1, bool arg2)
{
return arg1 ? 1 : arg2 ? 2: 3;
}
282:デフォルトの名無しさん
09/05/24 17:32:52
static int f[][] = {{3, 2}, {1, 1}};
int foo(bool arg1, bool arg2){
return f[arg1][arg2];
}
283:デフォルトの名無しさん
09/05/24 17:46:34
static int* f = {3, 2, 1, 1};
int foo(bool arg1, bool arg2){
ASSERT((!!arg1) == arg1 && (!!arg2) == arg2);
return f + ((arg1 << 1) | arg2);
}
284:デフォルトの名無しさん
09/05/24 17:47:21
>>279
速くするんだったらinline asmかな
やり方知らんから教えられないけど
285:279
09/05/24 18:06:32
>>280
速く動作するように記述したいという意味です。
確かに速記でもするかのような書き方でした。
>>281-283
ありがとうございます。
>>284
ありがとうございます。
一応標準C++だけで書きたいと思っております。
みなさんありがとうございます。
連続質問で申し訳ないのですが、
int bar(bool arg1, bool arg2)
{
if(arg1&&arg2){return 1;}
else if(arg1||arg2){return 2;}
else return 3;
}
でしたらどう記述するのが(動作速度的に)ベストでしょうか?
286:デフォルトの名無しさん
09/05/24 18:11:24
前のもそうだがその程度ならそのまま書くのが一番良いと思う。
特定の環境を想定しないのなら尚更だ。
287:デフォルトの名無しさん
09/05/24 18:12:35
>>286
たしかに、ボトルネックにならないなら素直な書き方が一番ですかね。
ありがとうございました。
288:デフォルトの名無しさん
09/05/24 18:15:00
ここ行けば、そういうの好きな人いっぱい居るぞ。
スレリンク(tech板)
俺は面倒くさいからパス。
289:デフォルトの名無しさん
09/05/24 20:14:35
数人の身長が記されているtxtファイルを読み込んで、
140 ー 145cm **
145 ー 150cm *
150 ー 155cm **
155 ー 160cm **
160 ー 165cm ****
165 ー 170cm **
の、ようにヒストグラムで出力するプログラムの作り方を教えてください。
290:デフォルトの名無しさん
09/05/24 20:17:07
読み込んで出力すればいいよ
291:デフォルトの名無しさん
09/05/24 21:35:54
>>289
1.テキストファイルを読み込む
2. int配列にそれぞれの範囲の要素を加算していく
3 配列の要素の値の数だけ*を表示する。
順番に作っていけばいい。
292:287
09/05/24 21:47:55
>>288
ありがとうございます。
・・・ボトルネックになるようでしたら挑戦してみます。
293:デフォルトの名無しさん
09/05/24 21:49:47
float A[4][21];
でA[2]とA[4]を入れ替える方法教えてください
294:デフォルトの名無しさん
09/05/24 21:56:24
>>293
std::swap(A[2][x],A[4][x])
でxを0〜21まで回せばいいんじゃない?
295:デフォルトの名無しさん
09/05/24 21:58:01
for(int i = 0; i < 21; i++){
float t = A[2][i];
A[2][i] = A[4][i];
A[4][i] = t;
}
296:デフォルトの名無しさん
09/05/24 21:58:36
普通にmemcpy3回じゃない?
ビットスワップでもいいけど
297:デフォルトの名無しさん
09/05/24 22:03:43
どうかなぁ。並列化考えたらmemcpyは不利な気がした。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5394日前に更新/231 KB
担当:undef