1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ] プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。 関連スレやURLは>>2 以降。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・ぐぐる ・マニュアルで探す ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(なるべくそのままで) ・実行環境(OS名、コンパイラ名) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって小心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。 宗教的な話題は禁止します。
596 名前:589 mailto:sage [2009/11/29(日) 20:38:31 ] >>595 さんの方法も試してみます。ありがとうございます。 とりあえずは以下の方法で実装できました。(言われてみれば当たり前かも・・・汗) struct TrackingPoint { int x; int y; }; class Perception { public: static TrackingPoint trackingPoint0; static TrackingPoint trackingPoint1; static TrackingPoint trackingPoint2; }; TrackingPoint Perception::trackingPoint0 = {0, 0}; TrackingPoint Perception::trackingPoint1 = {1, 1}; TrackingPoint Perception::trackingPoint2 = {2, 2}; int main() { printf("%d", Perception::trackingPoint0.x); printf("%d", Perception::trackingPoint1.x); printf("%d", Perception::trackingPoint2.x); return 0; }
597 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 00:53:41 ] MFCを使ったサンプルプログラムを実行したいのですが、 .NET 2008だと有料版を買うしか無いのですよね・・・?
598 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 01:28:33 ] >>597 「.NET 2008」って、「Visual Studio .NET か Visual Studio 2008」ってこと? まあ、そうだね。MFCを無料で入手する手段はないと思うよ。 ちょっと試すぐらいなら、現在無料で配布中の VS 2010 懼ァイ22でいけるか もしれない。
599 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 04:05:07 ] >>598 説明が足りなくてすいません Visual Stadio .NET Express EditionでMFCを使用したサンプルプログラムの動きを見たかったのです VS2010なら、動作してくれるのかな? ちょっとダウンロードして実行してみます
600 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 10:03:55 ] 1回動けばいいだけなら評価版をダウンロードすればいいだけだな
601 名前:デフォルトの名無しさん [2009/12/07(月) 21:57:33 ] a、b、cの3つのint型にそれぞれ8bit(01001110のようなもの)のデータをくっつけたいのですが、どうすればよいでしょうか。 つまり、aに5、bに3、cに8というデータがあったら、新しいint型のdに538というように ひとつの24bitのデータにしたいのです。 なにか良い手段がありましたら、お願いします。
602 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 23:27:47 ] >>601 a、b、cを左に8回シフトして0xffffff00(32bitの場合)とANDを取り 次に8bitデータとORを取る
603 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 23:28:31 ] あっごめん24ビットデータか じゃあ0xffff00とANDを取って
604 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 01:14:20 ] >>601 > つまり、aに5、bに3、cに8というデータがあったら、新しいint型のdに538というように これ、 4 ビットずつ 3 つで 12 ビットのデータにしてね?
605 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 01:27:26 ] >>604
606 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 04:37:51 ] >>601 1行目と2行目以降が同じ意味に聞こえないんだけど、もしかしてこういうこと? int d = ((a & 0xff) << 16) | ((b & 0xff) << 8) | (c & 0xff);
607 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 07:44:40 ] visual C++ 2008 Express Edition でシンプルなソフトを作ってみました。 そこで質問があるのですが、もし分かる人いたら教えてください。 @実行ファイルにアイコンをつけたいんですが、プロジェクトファイルを作成してしまった後でも、 アイコンをつける方法はあるのでしょうか。 (アイコンの絵柄のきれいさはあまりこだわりませんが、せっかくなんでアイコン作ってみたくて) ARelease環境で作成されたフォルダをみると プログラムの中で使う画像ファイルがなぜかないので手作業でフォルダに追加しないといけなかったり、 作成されたフォルダの中にexeファイル以外のファイルが8つぐらいあったりしてごちゃごちゃするので、 最終的に作成するファイルをexeファイルだけにする方法はないでしょうか?
608 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 12:46:29 ] 昔はリソーススクリプトをごりごりしていたけど(VC++ 6.0) いまはXMLになっている気がする(VS 2003頃からか) とりあえず、スレ違い Visual Studio 2008 Part 19 pc12.2ch.net/test/read.cgi/tech/1259076828/
609 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 14:11:26 ] >>607 >最終的に作成するファイルをexeファイルだけにする方法はないでしょうか? ビルド後のイベントに消すコマンドを書けばよいがそんなことは普通しない。 分割コンパイルの意味がなくなる。
610 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 20:40:37 ] >>601 が真にやりたいことが理解できてなくて 説明がうまいこといってないのか 俺の読解力がないのかが判断つかねえ
611 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 21:29:28 ] R=5 G=3 B=8から、RGB値の#538が欲しい、だと解釈したので>>606 でいいと思ってる
612 名前:デフォルトの名無しさん mailto:sage [2009/12/08(火) 21:41:17 ] サンプルのdが0x538だったら惑うことも無かったろう
613 名前:612 mailto:sage [2009/12/08(火) 21:42:19 ] 8bitの合成で24bitだから正しくは0x050308か
614 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 12:49:28 ] >>601 今の人はビットフィールドって知らないのか?
615 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 12:51:22 ] はぁ?
616 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 12:58:29 ] >>610 1行目と2行目の関連がまるで見えないので説明の問題だと思う
617 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 13:00:10 ] >>614 もし、8ビット毎の合成だったらunionだけでOKだな
618 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:24:01 ] C++/CLIってググっても情報少ないんだけど、 あまり使われていないのでしょうか?
619 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:31:41 ] えぇ、使われてません。 C++のルールからあまりに外れまくっている上に C#より面倒なくせにやれることはC#未満という有様なので。 用途がすごく限られます。
620 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 16:45:58 ] >>618 殆どはC#とC++の情報を読み替えるだけで賄える
621 名前:デフォルトの名無しさん [2009/12/12(土) 10:38:17 ] aとbというunsigned long型で、 aとbの差が±30以上ならint型cに1を入れる、というプログラムを作成したいのですが、 なにかいい方法はありませんか?
622 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:42:36 ] 普通に引き算の結果を比較するんじゃダメなの?
623 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:43:50 ] >>621 どうやったらダメだったのかとか自分の案くらい書けば?
624 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:44:31 ] unsigned じゃ引き算の結果のマイナスは表現できないから困るだろ
625 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:51:25 ] int main(){ unsigned long a = 39.5; unsigned long b = 6.4; unsigned long d; if(a>b){ d = a-b; }else{ d = b-a; } int c = 0; if(d>30){ c= 1; } cout << c << endl; }
626 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 10:51:25 ] 絶対値とりゃいい
627 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 11:49:49 ] if (a >= b + 30 || b >= a + 30) { c = 1; }
628 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 11:53:10 ] 最大値付近だとまずくない?
629 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:15:02 ] まずかった なんか綺麗に書けないかなと思ったけど難しかった
630 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:34:01 ] if (abs(a-b) > 30) c = 1;
631 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:34:58 ] 「30以上」
632 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 12:42:20 ] abs()の引数はintじゃねーの?
633 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 13:28:53 ] unsigned longのままでやりたいなら c = (a > b ? a - b : b - a) > 30 ? 1 : c;
634 名前:デフォルトの名無しさん [2009/12/12(土) 15:08:18 ] 横からスマソ int型のif文で、 if (x <= -50) みたいにできなかったっけ?
635 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 15:16:04 ] >>634 出来るが、一体どうしたね
636 名前:デフォルトの名無しさん [2009/12/12(土) 15:21:43 ] いや、int型のほうは負も扱えたよなと思って
637 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 15:22:29 ] >>636 今更なにを。。。 どの言語を普段お使いの方ですか?
638 名前:デフォルトの名無しさん [2009/12/12(土) 18:59:13 ] ここ数年、開発部門から離れてCとかC++も触れる機会が無かったからさ そろそろ戻れるって聞いて、必死で覚えなおしてる
639 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 19:01:58 ] ×戻れる ○戻される
640 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 19:14:33 ] >>1 なんで宗教的な話は禁止とか書いてあんの? プログラムと宗教って何か関係性でもあったの? 普通に考えたらプログラム板なんだから宗教の話なんてスレチのイタチだってのに わざわざ書くってことは何か理由がってのこと?
641 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 19:51:37 ] はい
642 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 20:37:59 ] >>640 vimとemacsのどちらがよりC++コーディングに適しているのか教えてください
643 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 21:20:01 ] 以下のコードのように文字列定数の先頭アドレスを返して 関数呼び出し元で利用するのは問題ないでしょうか。 手元の環境(gcc 4.4.0)では"abc"と表示されました。 #include <stdio.h> char *func() { return "abc"; } int main(void) { puts(func()); return 0; }
644 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 21:41:40 ] >>643 定数は問題ない
645 名前:デフォルトの名無しさん mailto:sage [2009/12/12(土) 21:58:57 ] 問題ないけど戻り値の型はconst chara*のほうがいいと思う
646 名前:643 mailto:sage [2009/12/12(土) 22:46:26 ] ありがとうございます。
647 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 04:59:03 ] >>642 それはエディタ論争だから鼬害
648 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 10:14:46 ] >>647 バカ発見www 単に彼は「宗教的な話は禁止」の例えで出したんだろjk
649 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 10:20:43 ] この板における「宗教」の意味を理解してないか、わざと理解してないふりをしてるアホには、 何を言っても無駄だろう。
650 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 11:21:40 ] viにしろ!!!!
651 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:22:13 ] 神は量子クラスを継承して光子オブジェクトを作られたわけだが それ以前から原子クラスを継承した水素オブジェクトは存在したのだな
652 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:33:22 ] >>651 いや存在してないと思うぜ。逆じゃねぇのか? あと、テンプレートの特殊化の方が近いと思うんだぜ。 template<double spin, double Mass, double Electric charge, 俺の知らない要素> class SubatomicParticle;
653 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 13:48:26 ] 逆というか、skyとgroundクラスをまず最初に作って そのとき一緒にwaterクラスも実装したらしい
654 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 15:26:49 ] 宗教的な話題は禁止します。
655 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 15:33:52 ] リアル宗教ktkr
656 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 17:01:10 ] C#信者だけど質問してもいい?
657 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 17:31:08 ] どうぞ
658 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 17:40:34 ] どうぞじゃねぇよ スレ違いだろ
659 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:00:32 ] C#信者だけど(C/C++の)質問してもいい?
660 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:08:40 ] >>659 ダメ 改宗してからおいでなさい。
661 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:15:40 ] C/C++/C# は宗教だったのか
662 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 18:26:25 ] そうです!!
663 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 20:14:15 ] すみませんがどうすればいいか教えてください。 下記のコードのcuetarget=cue_parse_file(fp);までは実行に成功するのですが、cd_dump(cuetarget);以降が実行されず、実行が止まってしまいます。 #include "C:/libcue-1.3.0/bin/cd.h" #include "C:/libcue-1.3.0/bin/cdtext.h" #include "C:/libcue-1.3.0/bin/cue_parser.h" #include "C:/libcue-1.3.0/bin/libcue.h" #include "C:/libcue-1.3.0/bin/rem.h" #include "C:/libcue-1.3.0/bin/time.h" int main(int argc, char** argv) { FILE *fp; /*ファイルポインタの宣言 */ Cd *cuetarget; /* ファイルのオープン */ if ((fp = fopen("S:/CDImage.cue", "r")) == NULL) { printf("file open error!!\n"); exit(EXIT_FAILURE); /*エラーの場合は異常終了する */ }else{ cuetarget=cue_parse_file(fp); if (cuetarget=NULL){ exit(EXIT_FAILURE); /*エラーの場合は異常終了する */ }else{ cd_dump(cuetarget); } } fclose(fp); /*ファイルのクローズ */ return (EXIT_SUCCESS); ・エラーメッセージ 特になし。 ・実行環境 OS:WindowsXP コンパイラ:MingW IDE:NetBeans6.0.1 使用したライブラリ:libcue-1.3.0( ttp://sourceforge.jp/projects/sfnet_libcue/ ) ・最終的にやりたいこと Cueシートの全てのトラックの、トラック名、アーティスト名などの属性を、別に用意したファイルの内容で自動的に置き換える。 (そのためにCueシートの解析用ライブラリをDLしてきた。)
664 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 20:18:23 ] とりあえず、PATHを通しとけ CUEファイルに原因があるかもしれないから CUEをどこかにあげてみて
665 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 20:44:05 ] >>664 PATHは通してあります。 CUEはこれです。 ttp://www1.axfc.net/uploader/Sc/so/63656
666 名前:デフォルトの名無しさん mailto:sage [2009/12/13(日) 21:19:00 ] >>663 この辺があやしい if (cuetarget=NULL){
667 名前:663 mailto:sage [2009/12/13(日) 21:27:17 ] 解決しました。ありがとうございます。我ながら何をやっているのか…。
668 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:10:06 ] 定数を左辺値にしないから・・・・・
669 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 20:27:02 ] いまどきのコンパイルなら警告出るだろ
670 名前:デフォルトの名無しさん mailto:sage [2009/12/14(月) 22:50:01 ] 脳内警告が常に出ます
671 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:07:23 ] >>668 左辺値の意味わかってないだろ。 まあどっちにしても定数を左に置くやつは信用できないけどな。
672 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:30:07 ] >>671 右の間違いだろ
673 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 10:44:07 ] プログラムの意味的にそうするのが自然であればそれでいいけど 単に凡ミスを防ぐために読みづらくするのは嫌だと言ってんの。
674 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 11:21:39 ] なんだ嫌なのか。
675 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:01:02 ] 俺も定数を左に置くような奴を見たら、どっかおかしい人だと思うだろうな、正直。 当然、そう書こうとする動機は知っているが。 ==と間違えて=を書く確率は、ちょっと慣れたまともなCプログラマなら0に限りなく 等しい。つまり、予防策としての効果も0に限りなく等しい。 よって、見た目に優れた書き方の方が良いが、左に定数を書く方がみんな見やすいと 思っているなら相当な変わり者だろう。物事は何でもかんでも対称的ではない。左と 右でどっちが感覚的に自然か、についても対称的な話ではない。現実に定数は右に 書かれる率が圧倒的に高い。 というようなことを感覚で判断できないか、または==と=を間違えることが実際に ある人なのか、どちらにしても信用には値しないだろうな。
676 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:03:56 ] ミスの確率の高さ低さより、致命傷になるかどうかじゃね? 今時のコンパイラを正しく使っていれば、間違えても致命傷にはならない だろうとは思う。
677 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:11:20 ] if ( MIN <= x && x < MAX ) {} とかは書くけど、 ==と=のミスを避けるために左に定数を書くことはないなぁ。 でも、 >ちょっと慣れたまともなCプログラマなら0に限りなく は、ソースがないから単なる妄想だね。^^ そしてハーブサッター先生の言葉を思い出そう。
678 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:16:48 ] ハーブサッターの言葉なんぞ多すぎてどれだか分かんねぇよw
679 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 12:21:59 ] ハーブサッターの言葉? 気の利いたコードは害悪だ、ってのは覚えてるな。
680 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 13:54:54 ] 個人的には >>677 > >ちょっと慣れたまともなCプログラマなら0に限りなく > は、ソースがないから単なる妄想 そういう統計は誰も取ってくれそうもないが、経験則としてはあるなあ。
681 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 14:08:48 ] 長くCを書いてると、比較の時は自然と==と入力してしまう
682 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:02:15 ] 0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。
683 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 15:06:07 ] if (!ちょっと慣れたまともなCプログラマ) { 682 名前: デフォルトの名無しさん [sage] 投稿日: 2009/12/15(火) 15:02:15 0に限りなく近いなら定数を左辺にするテクや、=に警告するコンパイルなんて生まれなかったろうに。 }
684 名前:デフォルトの名無しさん [2009/12/15(火) 15:17:15 ] 小心者はどこへいった・・・
685 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 21:57:19 ] 俺様は比較で代入なんて間違えないぜwwwwっていう勘違いちゃんならいるけど
686 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 22:35:07 ] 俺様は比較で代入なんて間違えないぜwww ただタイプミスするだけなんだぜwwww ダメじゃんorz
687 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:37:27 ] \(^o^)/オワタ
688 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 10:47:01 ] 結構膨大なコード書いてきたけど、ごく初期は別にして普通に一度も間違えないけどな
689 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:08:54 ] 間違えることよりも、早期発見できるほうが重要だけどな。 他人の作ったコードもメンテすることあるし。
690 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 14:09:20 ] タイプミスばっかでげんなり
691 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 15:27:40 ] >>688 PL/SQL と並行してやってると、代入/比較どころか 文字列のクォーテーションまで間違うぜ!
692 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:10:07 ] 他人に「定数は左に書こうぜ」とか言ってたらさらにキチガイじみてるな
693 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:11:16 ] 他人の作ったコードのメンテで「定数は左に」って役に立つの? 右に書いてあるコードを全部左に置き換えてからコード読むとか?
694 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 16:17:45 ] 「仕事じゃバカのコードもメンテしなきゃならないんだよ」理論の失敗例だな
695 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:25:03 ] vbの即時で文法ミス見つける機能が他の環境にもあれば そのうち実現するか
696 名前:デフォルトの名無しさん [2009/12/17(木) 04:02:14 ] パソコンの時刻を2038年1月19日3時14分7秒の30秒前に設定して30秒後どうなるのかを誰か試してみてくれないか? うちのパソコンでは何かうまくゆかないんだ