スレを勃てるまでもない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/
0153デフォルトの名無しさん
2009/05/19(火) 21:59:320154デフォルトの名無しさん
2009/05/19(火) 22:10:05ありがとうございます
作りながらそういう分野も勉強してみます
0155デフォルトの名無しさん
2009/05/20(水) 00:50:51ビットシフトや論理積とろうとしてもエラーがでてしまいます。
0156デフォルトの名無しさん
2009/05/20(水) 00:52:50flaute fdat
struct {
char cdat[4];
}
} udat;
0157デフォルトの名無しさん
2009/05/20(水) 01:28:14でも、何故structでchar cdat[4]を括ってるのか分かりません。何故ですか?
0158デフォルトの名無しさん
2009/05/20(水) 03:47:290159デフォルトの名無しさん
2009/05/20(水) 04:17:270160デフォルトの名無しさん
2009/05/20(水) 09:08:34別に括りたくなければ括らなくていいよ。それと、unionを使うことは環境依存という修羅の道に進むことだと言うこともお忘れなく。
# 尤も、float値をバイナリのままシリアル伝送しようと言う時点で既に修羅の道だけど。
0161デフォルトの名無しさん
2009/05/20(水) 09:41:13memcpyでいいじゃん
0162デフォルトの名無しさん
2009/05/20(水) 09:42:140163デフォルトの名無しさん
2009/05/20(水) 09:45:50このケースでどのようにmemcpy()を使うのか、詳しく。
0164デフォルトの名無しさん
2009/05/20(水) 09:54:42unsigned 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]);
}
0165デフォルトの名無しさん
2009/05/20(水) 10:13:59float f;
f = 10000000.0f;
for (int i=0; i<sizeof(f);i++) {
printf("%#x,", ((unsigned char*)&f)[i]);
}
0166デフォルトの名無しさん
2009/05/20(水) 10:21:42団塊世代の上司ってそんな感じのやつが多いよなあ。
解りもしないくせに説明しろだの言ってくるから困る。
解るためには自分で理解しようという努力が必要なのにその努力もせずに、
自分が理解できないのは説明しているやつが悪いからだ、と責任の押しつけまでしてくることもある。
んで結局は他の何人かが良いと思うか悪いと思うか聞いて直感で判断するわけなんだが、
解らないなら最初からそうしろ、と思うわけなんだよ。
結局のところ、団塊世代は対抗意識が非常に強くて教育者あるいは指導者しての能力が致命的に欠落していると言わざるを得ない。
0167デフォルトの名無しさん
2009/05/20(水) 10:25:30内容が知りたいわけじゃなくて、当人がちゃんと理解してるか判断するために
説明させてるんだよ、たぶんw。
0168デフォルトの名無しさん
2009/05/20(水) 10:33:300169デフォルトの名無しさん
2009/05/20(水) 10:45:23つまり部下を信用していないということか。
社内にまで敵を作って大変ですね。
どうせムズカシイ理論とかは理解できないんだから、せめて成果で判断すりゃいいのにね。
最初は小さいことから成果を積ませて、だんだん大きいことをやらせれば良いのに。
0170デフォルトの名無しさん
2009/05/20(水) 11:08:12わざわざコピーする理由は? 元質は転送が目的なんだから、コピーしなければいけないなんて要件ないよね。
0171デフォルトの名無しさん
2009/05/20(水) 11:12:52だからコピーやめたやーん
0172デフォルトの名無しさん
2009/05/20(水) 11:13:570173デフォルトの名無しさん
2009/05/20(水) 11:17:510174デフォルトの名無しさん
2009/05/20(水) 11:18:390175デフォルトの名無しさん
2009/05/20(水) 11:21:200176デフォルトの名無しさん
2009/05/20(水) 11:22:11charの配列にコピーすれば取り出せるんじゃね?
って思ったけど、じゃあcharにキャストすればいいんじゃね?
という具合に思考が遷移したんだよ。
ごめんよ。
0177デフォルトの名無しさん
2009/05/20(水) 12:05:38いや、技術的に正確かどうかなんてどうでもいいんだよ。
納得させられるかどうかだけが問われる。
0178デフォルトの名無しさん
2009/05/20(水) 12:08:56だから、単に自分の権威を見せつけたいというのと対抗意識の現れでしかないんだよ。
0179デフォルトの名無しさん
2009/05/20(水) 12:12:13社会のゴミですね。
0180デフォルトの名無しさん
2009/05/20(水) 12:14:42うん、そうかもね。
だから?w
それで出世あきらめるの?
0181デフォルトの名無しさん
2009/05/20(水) 12:17:26技術盗んだら海外におさらばするつもり
0182デフォルトの名無しさん
2009/05/20(水) 12:18:530183デフォルトの名無しさん
2009/05/20(水) 12:26:22さすが社会のゴミ 国賊 団塊世代は日本をつぶす気か
0184デフォルトの名無しさん
2009/05/20(水) 12:30:530185デフォルトの名無しさん
2009/05/20(水) 12:40:46団塊世代が悪いかどうかは知りませんが、うちの会社でも団塊世代の天下りを受け入れない方針になったみたいですよ。
まぁ、最近の世論的に天下りはまずいからでしょうが。
0186デフォルトの名無しさん
2009/05/20(水) 16:43:34VMwareソフトウェアのどのシリーズを選んだらいいのでしょうか?
0187デフォルトの名無しさん
2009/05/20(水) 16:44:380188デフォルトの名無しさん
2009/05/20(水) 17:14:030189デフォルトの名無しさん
2009/05/20(水) 17:18:150190デフォルトの名無しさん
2009/05/20(水) 18:17:160191デフォルトの名無しさん
2009/05/20(水) 19:13:140192デフォルトの名無しさん
2009/05/20(水) 19:15:490193デフォルトの名無しさん
2009/05/20(水) 22:47:50using namespace std;
int main(){
int tmppl;
cin>>tmppl;
int const pl=tmppl;
int php[pl];
return 0;
}
あらかじめ数字を入力して変数tmpplに入れておき
const plの初期化の際にtmpplを使おうと思ったのですがコンパイルエラーが出ます
これは無理なんでしょうか?
また配列の要素数をキーボードで入力した数字で決めたいのですが、どうすればよいでしょうか?
0194デフォルトの名無しさん
2009/05/20(水) 22:54:38>const plの初期化の際にtmpplを使おうと思ったのですがコンパイルエラーが出ます
>これは無理なんでしょうか?
無理です
>また配列の要素数をキーボードで入力した数字で決めたいのですが、どうすればよいでしょうか?
std::vector
0195デフォルトの名無しさん
2009/05/20(水) 22:58:060196デフォルトの名無しさん
2009/05/20(水) 23:07:30ありがとうございます!
初期化と代入の違いが何となく分かりました
0197デフォルトの名無しさん
2009/05/21(木) 00:31:36配列の添え字はコンパイル時定数でなければならないという仕様の話じゃないのかい?
っていうか、前にもまったく同じ回答をした気配がする。
0198デフォルトの名無しさん
2009/05/21(木) 03:35:38(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をとってみた。それでも
動作したのだが、なんで動くんだ?
0199デフォルトの名無しさん
2009/05/21(木) 03:57:19素晴らしい
0200デフォルトの名無しさん
2009/05/21(木) 03:59:50そのコンパイル単位で定義されているかどうかは関係ない。
それと、関数はデフォルトでextern。
つまり、staticを付けないで宣言(定義も)されたものは、全てexternと同等となる。
0201デフォルトの名無しさん
2009/05/21(木) 04:00:000202デフォルトの名無しさん
2009/05/21(木) 04:00:170203デフォルトの名無しさん
2009/05/21(木) 04:07:44通勤医師の就職誌か。
0204デフォルトの名無しさん
2009/05/21(木) 04:12:300205デフォルトの名無しさん
2009/05/21(木) 08:10:30んー、よくわからんのですがとりあえず関数はおいておいて変数については
「この変数はグローバルだ。ただし定義自体はこのファイルでなくて 別のソースファイルでしているから気をつけろ。」
この定義は間違っていますか?それとも合っている?今、同じソースファイルで宣言だけでなく定義もしたらエラーに
なったのですが。。わかりやすい説明モトム
(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;
}
0206デフォルトの名無しさん
2009/05/21(木) 08:20:02まさか宣言しないシンボルを使おうとかしてないよな
0207デフォルトの名無しさん
2009/05/21(木) 08:24:490208デフォルトの名無しさん
2009/05/21(木) 08:45:540209デフォルトの名無しさん
2009/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;
}
0210デフォルトの名無しさん
2009/05/21(木) 11:50:47Point *operator+(Point *p) {
...
return this;
}
p3 = *p1 + p2;
コンパイルするだけならこう変更する
0211デフォルトの名無しさん
2009/05/21(木) 11:53:23仮にp3 = p1 + p2;
を計算させたい場合は関数定義はどうすればいいですか?
0212デフォルトの名無しさん
2009/05/21(木) 13:01:54どうしてもやりたいなら「フレンド関数 オーバーロード」あたりでぐぐれ
あと補足だけど>>210はp1==p3になるから気を付けてね
0213デフォルトの名無しさん
2009/05/21(木) 15:22:460214デフォルトの名無しさん
2009/05/21(木) 16:32:56std::cout << "\r12345\n";
とすると12345ABCDEFGHIJKLMNと表示される。
\rは復帰、現表示位置がその行の先頭に移動する。
というのはわかるが、一体何の役に立つんだこれ?
マジで使ったことある人いたら教えてくれ
0215デフォルトの名無しさん
2009/05/21(木) 16:40:090216214
2009/05/21(木) 16:41:050217デフォルトの名無しさん
2009/05/21(木) 16:42:370218デフォルトの名無しさん
2009/05/21(木) 16:49:36externは、別のファイルで定義しているリソース(変数とか)を
このファイルでも流用するよ、っていう宣言。
C++では、変数名・関数名などは、その変数・関数を使用するより前に、
それが何なのかを同じファイル中でコンパイラに教えてやらないとエラーになる。
お前さんのソースの中で、グローバル的に使用されているのは、
void func()とint globalの2つ。
func()を使用しているのはmain.cppだが、ここではfunc()を使用するより
前に
void func();
と宣言してあるから無問題。
一方、another.cpp内で使用されているglobalは、定義はmain.cppでしているが、
another.cpp内で宣言していない。
だからコンパイラはanother.cppのglobalという識別子が何なのかという
情報を教えてもらってないのでエラーになる。
0219デフォルトの名無しさん
2009/05/21(木) 16:52:01http://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89
0220デフォルトの名無しさん
2009/05/21(木) 17:05:44つか、それ12345FGHIJKLMNって表示されないか?
処理系依存なんかな。
0221デフォルトの名無しさん
2009/05/21(木) 21:03:52void *operator new(size_t size,const char *pname, int nline );
#define new new(__FILE__, __LINE__)
とnewを実行したソース名と行数を取ってるんだが
これのdelete版が出来ない
もしかしてdeleteの方は無理?
STL使ったら、妙なdeleteが増えて特定したいんだ
0222デフォルトの名無しさん
2009/05/21(木) 21:43:31処理系っつーか、出力装置 (と、その状態) による。
0223デフォルトの名無しさん
2009/05/21(木) 22:21:07SDKで一からアプリケーションを作成するのは
どちらがいいでしょうか?
0224デフォルトの名無しさん
2009/05/21(木) 22:27:330225デフォルトの名無しさん
2009/05/22(金) 00:48:32まあ俺のことだが
0226205
2009/05/22(金) 01:07:35やっと理解できたー!有難う。
というわけで俺んなかでの結論;
「extern就職誌をつけられた変数・関数はこのファイルでこれから使うけどどっか別のソースファイルで
指定されてるからね!ちなみに関数のプロトタイプがあるとしたらそれはextern就職誌つけなくてもそれは
externとみなされてるから、別のファイルで指定されてるかもしんないし、ひょっとするとこのファイルの
後で定義されてるかもしんない」
という感じか。
なんか認識にまだ問題有ったら指摘して
0227デフォルトの名無しさん
2009/05/22(金) 11:00:270228デフォルトの名無しさん
2009/05/22(金) 11:55:100229デフォルトの名無しさん
2009/05/22(金) 15:31:37出たらexternをつければよい
0230デフォルトの名無しさん
2009/05/22(金) 16:45:030231デフォルトの名無しさん
2009/05/22(金) 17:56:560232デフォルトの名無しさん
2009/05/22(金) 17:59:490233デフォルトの名無しさん
2009/05/22(金) 18:32:07初期化の問題を恐れてほとんど全部
関数スコープ内でのstatic変数の参照の呼び出しにしちゃうし
(つまり結局グローバルスコープではない。)
。
0234デフォルトの名無しさん
2009/05/22(金) 18:39:490235デフォルトの名無しさん
2009/05/22(金) 19:22:420236デフォルトの名無しさん
2009/05/23(土) 09:48:22みたいな感じでtemplate <int N>のNに対応して引数の数を変える関数とかって標準で作れますか?
0237デフォルトの名無しさん
2009/05/23(土) 10:04:520238デフォルトの名無しさん
2009/05/23(土) 12:05:470239デフォルトの名無しさん
2009/05/23(土) 12:21:57ls-オプションの動作のCで書かれたソースはコンピュータ内にあるのでしょうか?
0240デフォルトの名無しさん
2009/05/23(土) 12:38:520241デフォルトの名無しさん
2009/05/23(土) 12:48:05lsは、Coreutilsに含まれているはずだから
http://www.gnu.org/software/coreutils/
から手に入れることができるはずだよ
0242デフォルトの名無しさん
2009/05/23(土) 13:22:25加速度を積分した値が静止させても0に戻りません。
そこで出来るだけ正確に無理矢理0に戻そうとしているんですが、何かいい方法ありませんか?
あと、このようなフィルタ処理?とかを扱ってるスレってありますか?
0243デフォルトの名無しさん
2009/05/23(土) 15:12:400244デフォルトの名無しさん
2009/05/23(土) 18:32:350245デフォルトの名無しさん
2009/05/23(土) 21:26:050246デフォルトの名無しさん
2009/05/23(土) 21:34:12ハゲに聞いてくれ
0247デフォルトの名無しさん
2009/05/23(土) 21:45:27C++はPascalじゃないよ
[a, b]なんて書き方はないから
0248デフォルトの名無しさん
2009/05/23(土) 21:53:10気が済むまでメンバ変数詰め込んだクラスを引数にとる[]を定義すればいいじゃないか
0249デフォルトの名無しさん
2009/05/23(土) 22:03:42とかやるのと一緒だな>>247
0250246
2009/05/23(土) 22:09:52別に>>245はPascalとごっちゃにしているわけではないだろう。
オペレータオーバーロードとしては[a, b]の形も認めてもいいんじゃないかって
>>245は言いたいんじゃないの?
0251デフォルトの名無しさん
2009/05/23(土) 22:24:41関数呼び出しはむしろ特別な場合
0252246
2009/05/23(土) 22:28:16そりゃ知っているけどさ、
出来たら便利じゃない。
今からじゃ互換性の関係があって無理だけど、
最初の段階で可能であるように仕様を定めておけばよかったのでは。
・・・ということも踏まえた上で、
だから俺は「ハゲに聞いてくれ」と言ったのだ。
■ このスレッドは過去ログ倉庫に格納されています