スレを勃てるまでもないC/C++の質問はここで 10
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/05/14(木) 20:35:36過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
http://pc11.2ch.net/test/read.cgi/tech/1221633708/
スレを勃てるまでもないC/C++の質問はここで 5
http://pc11.2ch.net/test/read.cgi/tech/1230516307/
スレを勃てるまでもないC/C++の質問はここで 6
http://pc11.2ch.net/test/read.cgi/tech/1231564903/
スレを勃てるまでもないC/C++の質問はここで 7
http://pc11.2ch.net/test/read.cgi/tech/1232983248/
スレを勃てるまでもないC/C++の質問はここで 8
http://pc12.2ch.net/test/read.cgi/tech/1235921779/
スレを勃てるまでもないC/C++の質問はここで 9
http://pc12.2ch.net/test/read.cgi/tech/1240022781/
0002デフォルトの名無しさん
2009/05/14(木) 20:52:060003デフォルトの名無しさん
2009/05/14(木) 21:15:47は「意味的に正しくない引数に対する例外」ということなのですが、
この「意味的」という意味が分かりません。
具体的にどのような場合が「意味的に正しくない」のでしょうか?
0004デフォルトの名無しさん
2009/05/14(木) 21:36:121-12以外が渡されたら、意味的におかしいだろ?
00053
2009/05/14(木) 21:48:32ありがとうございます。
1-12以外が渡されたら、それは想定範囲外だから std::out_of_range であると思っていました。
0006デフォルトの名無しさん
2009/05/15(金) 02:32:50/´ ̄`ヽ /: : : \_____/: : : : ヽ、
,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
/: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
/: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/
 ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/
/: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、
. /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\
/: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \
/ / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ
l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :}
l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : /
|: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ
!: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
V ヽ| }/// r‐'⌒ヽ イ〉、
ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これは>>1乙じゃなくて
ィ幵ノ ./:/:./:.! !: : : : :!`ヽ ポニーテールなんだから
r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\ 変な勘違いしないでよね!
/: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\
0007すげーどーでもいい質問
2009/05/15(金) 03:23:23private:
int h;
public:
Hoge(int h) : h(h) {}
};
俺、上みたいなとき、いつも仮引数の名前とメンバ変数の名前同じにしてるんだが、
(特に問題なく動くので)そういうコード見たことない。混乱するから?それともたまたま
動いているだけで何か問題あるの?
俺にとっては毎回変数と違う名前を思いつく方がよっぽど紛らわしいんだが。
0008デフォルトの名無しさん
2009/05/15(金) 03:24:23初項1、公比1/3の等比数列の4項までの和を求めたいのですが
(もちろん普通に計算すればできますが)
どうにも上手くいかなくて困っています。助けてください。
自分が書いたのはこんな感じです。
#include <stdio.h>
#include <conio.h>
int main(void ){
int l;
double m,n;
l=0;
m=0;
n=0;
for(l=0;l<5;l++) {
m=1/3^l;
n=n+m;
}
printf("%f",n);
getch();
return 0;
}
どこがいけないのかさっぱりわかりません。どなたかご指摘お願いします。
0009デフォルトの名無しさん
2009/05/15(金) 03:38:03C言語ではべき乗演算子はない
^はXOR演算子
だから m = 1 / pow(3, l); とすればいいはず
0010デフォルトの名無しさん
2009/05/15(金) 03:40:57powがdouble型を返す事を前提にしてるんで
そうしないと整数÷整数という意味のない事をする事になってしまう
0011デフォルトの名無しさん
2009/05/15(金) 04:09:31問題あるよ。
その問題とはお前が低脳ってこと
普通の脳なら、int m_h;とかする。
0012デフォルトの名無しさん
2009/05/15(金) 04:50:04おまえ番号ちがうくらいだからもっと低能だな
0013デフォルトの名無しさん
2009/05/15(金) 04:52:480014デフォルトの名無しさん
2009/05/15(金) 05:25:09どこがおかしいのでしょうか
#include <iostream>
class Test {
public:
static int x;
int y;
Test() {}
~Test() {}
void show();
static void s_show();
};
void Test::show() {
std::cout << "y=" << y << std::endl;
}
void Test::s_show() {
std::cout << "x=" << x << std::endl;
}
int main() {
return 0;
}
0015デフォルトの名無しさん
2009/05/15(金) 05:28:030016デフォルトの名無しさん
2009/05/15(金) 05:45:40class Test {
public:
static int x;
int y;
Test() {}
Test(int i = 0) : y(i) {}
~Test() {}
void show();
static void s_show();
};
int Test::x = 1;
void Test::show() {
std::cout << "y=" << y << std::endl;
}
void Test::s_show() {
std::cout << "x=" << x << std::endl;
}
int main()
{
Test t(2);
t.show();
t.s_show();
}
0017デフォルトの名無しさん
2009/05/15(金) 06:05:17例)
#include <iostream>
int global;
int main() {
static int staticint;
int local;
std::cout << local << std::endl;
std::cout << global << std::endl;
std::cout << staticint << std::endl;
return 0;
}
(結果)
-1881141193 ←ゴミ
0 ←きちんと0で初期化されてる
0 ←きちんと0で初期化されてる
0018デフォルトの名無しさん
2009/05/15(金) 06:09:29クラスのstatic変数は例外です
というのもクラスのインスタンスを複数作ってもstatic変数の
実体は一つしか作られない上にコンストラクタでも初期化不可能
なため、どこかで定義してやる必要があります。
もちろん = 1 を省略すれば 0 で初期化されます。
0020デフォルトの名無しさん
2009/05/15(金) 10:03:13メンバー変数と仮引数と局所変数を区別するプリフィックスをつければいいんじゃないかな。同じ意味で記憶クラスが異なる変数を人目で見分けられるし、名前を増やさなくて済む。
例えば、メンバーはm、仮はkとか何とか
class Hoge {
private:
int mh;
public:
Hoge(int kh) : mh(kh) {}
};
0021デフォルトの名無しさん
2009/05/15(金) 10:08:37私は小さいコンストラクタに限り、同じ名前でやってるよ。まぁ、別に問題ないな。
>>10
解釈がおかしい。プロトタイプ宣言のないpow()を使った場合、引き数のそれぞれがintのまま引き渡されてしまいおかしなことになる。
又、戻り値もdouble値として戻されるのにintとして受け取ろうとするからやはりここでもおかしなことになる。
x86みたいにintとdoubleで格納するレジスタが異なるような環境の場合、一見巧く動くから厄介だ。
0022デフォルトの名無しさん
2009/05/15(金) 10:14:130023デフォルトの名無しさん
2009/05/15(金) 12:22:26よくよく考えると<iostream>のような標準ヘッダはインクルードガードしないで何度もインクルードしているような
気がしますが、なぜエラーにならないのでしょうか?
0024デフォルトの名無しさん
2009/05/15(金) 12:29:45標準ヘッダもインクルードガードしてるだろ。
002523
2009/05/15(金) 12:43:11あ、そっか。独自のヘッダファイルでインクルードガードするんじゃなくて、
標準ヘッダ側にインクルードガードが書かれてるのか。ところで標準ヘッダファイルを見た事がないのですが、
標準ヘッダってどこのディレクトリにあるんでしょうか?iostreamでCドライブ検索したけどヒットしませんでした。
Visual Studio2008使ってます
0026デフォルトの名無しさん
2009/05/15(金) 13:13:44002723
2009/05/15(金) 13:19:27C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
ですよね!?
0028デフォルトの名無しさん
2009/05/15(金) 13:24:30ドキュメントを開くを選んで
開いたらタブで完全パスのコピー
002923
2009/05/15(金) 14:09:23ヒットしなかったのは違うドライブにインストールしてたからだった。。
大変失礼しやした。ありがとー
0030デフォルトの名無しさん
2009/05/15(金) 14:39:22ここにインライン関数はソース側に記述できないと書いてあるのですが(ヘッダに書けってことですよね)、
試したらソースファイル(cpp)にインライン関数を書いてもエラーになりませんでした。
僕の読み違いでしょうか?
0031デフォルトの名無しさん
2009/05/15(金) 16:08:38>僕の読み違いでしょうか?
いいえ、間違いです。
0032デフォルトの名無しさん
2009/05/15(金) 16:33:30どっちなんだよww
0033デフォルトの名無しさん
2009/05/15(金) 16:48:14従って「読み違い」ではなく、「検証方法の間違い」だ。
0034デフォルトの名無しさん
2009/05/15(金) 17:22:25メンバの値がどれも同じになるなら、変数と同じ気がするんですが…
0035デフォルトの名無しさん
2009/05/15(金) 17:37:310036デフォルトの名無しさん
2009/05/15(金) 17:44:56同じデータだけどデータ型が頻繁に変わるゆうな時に使う、という認識ですか?
0037デフォルトの名無しさん
2009/05/15(金) 17:50:18メモリで考えろ
0038デフォルトの名無しさん
2009/05/15(金) 17:52:37>同じデータだけどデータ型が頻繁に変わるゆうな時に使う、という認識ですか?
データ型が変わるという認識は間違い。
例えば
2つの変数char cとint iに対して同時にアクセスしないなら
それをunionにすれば同じメモリ上に配置できるから節約できるでしょ?
ただしそのunionの値を読み出す時は
どちらの値が入っているかに気を配りながら使う手間が必要。
0039デフォルトの名無しさん
2009/05/15(金) 17:53:06typedef struct
{
int sampling_rate;
}AAC;
typedef struct
{
int sampling_rate;
}AC3;
typedef struct
{
union{
AAC aac;
AC3 ac3;
}u;
}SOUND;
int main(void)
{
SOUND sound;
// なにかの処理
}
みたいな?
0041デフォルトの名無しさん
2009/05/15(金) 17:56:480042デフォルトの名無しさん
2009/05/15(金) 18:17:13typedef union {
struct foo {
int x;
int y;
} s;
int array[sizeof(struct foo)];
} coord_t;
0043デフォルトの名無しさん
2009/05/15(金) 18:28:250044デフォルトの名無しさん
2009/05/15(金) 18:45:310045デフォルトの名無しさん
2009/05/15(金) 20:16:520046デフォルトの名無しさん
2009/05/15(金) 20:23:110047デフォルトの名無しさん
2009/05/15(金) 20:42:340048デフォルトの名無しさん
2009/05/15(金) 20:50:55#include <linux/types.h>
#include <linux/config.h>
#include <asm/system.h>
include <asm/io.h>
これらのファイルがないと怒られます、どうしたらいいのでしょうか?
0049デフォルトの名無しさん
2009/05/15(金) 21:03:31それ以外なら Linux板で聞け。
0050デフォルトの名無しさん
2009/05/15(金) 21:15:04Thx
slacklwareなんでlinux板で聞きます、因みにkernel-headersはインストールしているのですが
カーネルを 2.6.29.3に上げているためだと思います、 2.6.29.3用のkernel-headersをインストールしないといけないのでしょうかね?
0051デフォルトの名無しさん
2009/05/15(金) 21:15:52ありが�d
クラス覚えた手だけどこりゃ便利そうだ
0052デフォルトの名無しさん
2009/05/15(金) 21:18:50C言語で、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をインストールしないといけないのでしょうか?
0053デフォルトの名無しさん
2009/05/15(金) 22:52:38CPUが100Mhzだとすると、
たとえば、*buf = 1000 とか一つ処理するのにどれくらいかかりますか?
0054デフォルトの名無しさん
2009/05/15(金) 22:54:140055デフォルトの名無しさん
2009/05/15(金) 22:57:17J 釣りか ?
それくらい解決できないようではC言語を使わないでもらいたい。
昔の人は考えた、無ければ作ればいいと。
findでgrepのviだろjk.
0056デフォルトの名無しさん
2009/05/15(金) 23:01:31コンパイルしてアセンブラのコードを見ないと。
最近のCPUは複雑だから、それでも難しいと思うけど。
0057デフォルトの名無しさん
2009/05/15(金) 23:10:21アセンブラのコードみたらわかるというわけでもないのですね
そういうのって計算できないものなのかな
おおよその計算ができるプログラムなりあったりしないのでしょうか?
CPU作ってる人たちはそういうの計算してるんですよねやっぱり
0058デフォルトの名無しさん
2009/05/15(金) 23:20:43アセンブラの判る人間なら、この処理はこんなコードに落ちるから、何クロックとか推測出来る。
同じ周波数でもCPUによってかかる時間が違うから単に100MHzとか言われても答えようがない。
もっと問題なのは
*buf = 1000;
なんてのはコンパイラの最適化でどうなるか判らないことだ。
0059デフォルトの名無しさん
2009/05/15(金) 23:22:0910年くらい前に読んだアセンブラの本にはVTuneってツールで
プロファイルしながら、アセンブラのコードを最適化する例が
乗ってたよ。
ググったら、今でも売ってるみたいなんで、そういうツールを
使えばわかるんじゃないの?
0060デフォルトの名無しさん
2009/05/15(金) 23:22:27あとは、CPUのシミュレータがあるからね。
0061デフォルトの名無しさん
2009/05/15(金) 23:24:21Mhz以外に何がわかればいいのでしょうか?
計算方法としては
Cのソースをコンパイル→アセンブラ見る→CPUから計算? という感じでしょうか
0062デフォルトの名無しさん
2009/05/15(金) 23:26:20たとえ同じCPUでも、その前のコードによってキャッシュやパイプラインの状況が
異なってくるから何とも言えないというのはある。
0063デフォルトの名無しさん
2009/05/15(金) 23:28:09大体はわかりませんか?
たとえば10000回ループさせたとして
これくらいだと、100ms〜200msかかるとか
0064デフォルトの名無しさん
2009/05/15(金) 23:28:58それかなりの精度の読みを要求してるなw
0065デフォルトの名無しさん
2009/05/15(金) 23:29:430066デフォルトの名無しさん
2009/05/15(金) 23:32:08大体は判るって言ってるだろうが。
日本語に不自由してるのか?
アセンブラ勉強しろ。その範囲で判る範囲の推測は出来る。
それより実測した方が早いがな。
0067デフォルトの名無しさん
2009/05/15(金) 23:36:45その大体すら教えてくれないのにそういわれても
0068デフォルトの名無しさん
2009/05/15(金) 23:39:53CPUすら教えてくれないのにそう言われても。
0069デフォルトの名無しさん
2009/05/15(金) 23:40:42実測するのが早い。
実測できないのなら、MIPS値がわかれば一秒間に実行できる大体の命令数がわかる。
0070デフォルトの名無しさん
2009/05/15(金) 23:42:36ハードウェア等の動かない前提のものならともかく、
OSやサービスパックの有無、画面のサイズなどの描画関係やアンチウィルスソフトなんかも走ってればかなり差も出る
ってか、実測すれば??
0071デフォルトの名無しさん
2009/05/15(金) 23:47:190072デフォルトの名無しさん
2009/05/15(金) 23:50:22サービスパックの有無とか安置ウイルスソフトどうこうとかって話はないだろ。
0073デフォルトの名無しさん
2009/05/15(金) 23:54:230074デフォルトの名無しさん
2009/05/16(土) 00:01:32「全フットプリント合計の最悪値以下」しか答えようがないでしょ。
キャッシュやらパイプラインやら環境要因/外的要因が多すぎる。
組み込み用のMMUもないCPUを割り込み禁止で使えば、
好きなだけアセンブラから完全な精度で値を割り出せるよw
0075デフォルトの名無しさん
2009/05/16(土) 00:50:280076デフォルトの名無しさん
2009/05/16(土) 01:15:54unionをどんな時に使ってるんだ?
0077デフォルトの名無しさん
2009/05/16(土) 08:09:09あとは特定のファイル形式のヘッダとか。
俺は組み込みやらんから知らないけど、メモリの制約が大きい環境では勿論メモリ節約の意味で使うだろうし。
0078デフォルトの名無しさん
2009/05/16(土) 13:17:22コンパイルで3回ほどやったら固まったり
ビルドですぐに固まったりして 何度も強制終了して困っています。
何か解決策はありますでしょうか?
使用 VC++6.0
OS WindowsXP Proffesional
メモリ 4GB
CPU Core2 Duo 3GHz
です。
0079デフォルトの名無しさん
2009/05/16(土) 13:50:07>使用 VC++6.0
これを新しくするか
>OS WindowsXP Proffesional
これを古くする。
0080デフォルトの名無しさん
2009/05/16(土) 14:14:42新しくするというのは
VC++ 2008にするという事ですか?
0081デフォルトの名無しさん
2009/05/16(土) 14:40:06もう使い物にならん。
0082デフォルトの名無しさん
2009/05/16(土) 17:21:57矢沢久雄さんの「C++クラスの継承」を読み終わって
平山尚さんの「ゲームプログラマになる前に覚えておきたい技術」を読んでみたのですが
最初のプログラムって、初心者が思いつくようなものなのでしょうか?orz
初心者向けと聞いて開いてみたのですが、難しくて挫折しそうです・・・。
平山さんの本を読むために、読んでおくべき本があったら教えてください・・・。
0083デフォルトの名無しさん
2009/05/16(土) 17:26:420084デフォルトの名無しさん
2009/05/16(土) 17:29:36簡単なものからで良いから、数を作ることが必要。
例えば、マラソンの本を1万冊読もうがマラソン選手になれるわけではない。
0085デフォルトの名無しさん
2009/05/16(土) 17:35:44即レスありがとうございます。
プログラムも自分なりに作ってはいるのですが
x軸やy軸などの基本書に書いてなかった概念が出てきて
何か足りない知識があるのだろうか、と思っています。
0086デフォルトの名無しさん
2009/05/16(土) 17:37:50本当に知りたいのはなに?
0087デフォルトの名無しさん
2009/05/16(土) 17:47:14数学の知識があればいけるのでしょうか?
私の単なるプログラムの経験不足でしょうか・・・。
目にしたことない単語が多く出てきたので、難しく感じています。
数学は大学センター試験で1A,2B両方とも80点取れる程度です。
0088デフォルトの名無しさん
2009/05/16(土) 17:53:15なんとなくスレ違だが、>>85の例題が悪い。
>私の単なるプログラムの経験不足でしょうか・・・。
これが答え。
易しく言うと、ある現象、キャラガX軸方向に歩いていきます。とした場合。
あなたなら、簡単に計算式が予想できると思う。しかしだ、
それをプログラムとした場合のモデル化が予想できない状態である。
この解決策は、ずばり、経験だけ。あなたなら経験すればすぐ作れるようになる
0089デフォルトの名無しさん
2009/05/16(土) 17:54:240090デフォルトの名無しさん
2009/05/16(土) 17:56:46レスありがとうございます。
やはり経験不足なのですね。
色々なプログラムに触れて勉強したいと思います。
どうもありがとうございました。
0091デフォルトの名無しさん
2009/05/16(土) 18:10:06解けない時は、他の人の回答を 手打ちで入れる。
コピペは駄目ぜったい
0092デフォルトの名無しさん
2009/05/16(土) 18:40:040093デフォルトの名無しさん
2009/05/16(土) 23:41:39やはり誰も祝ってくれないのでしょうか。
int main(void){
int i;
for(i=0;i>100;i++)
printf("お前、お誕生日おめでとう。\n");
return 0;
}
0094デフォルトの名無しさん
2009/05/16(土) 23:43:28釣り?マジ?コマンドラインからそのプログラムを起動しろ
0096デフォルトの名無しさん
2009/05/16(土) 23:48:54int main(void){
while(1) {
printf("お前、お誕生日おめでとう。\n");
return 0;
}
0097デフォルトの名無しさん
2009/05/16(土) 23:49:540098デフォルトの名無しさん
2009/05/16(土) 23:51:05しかしこういうエラーが出るんです。
'int' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0099デフォルトの名無しさん
2009/05/16(土) 23:53:370100デフォルトの名無しさん
2009/05/16(土) 23:57:08もしかしてウインドウズだとできないんですか?
010193
2009/05/17(日) 00:01:30一年後よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています