【初心者歓迎】C/C++室 Ver.22【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/10/10(月) 00:44:47ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
http://pc8.2ch.net/test/read.cgi/tech/1125743714/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0153デフォルトの名無しさん
2005/10/11(火) 23:42:05thisを渡したら。
0154デフォルトの名無しさん
2005/10/11(火) 23:57:30明らかにシンタックスエラーじゃないか
どんな糞コンパイラだよ
0155デフォルトの名無しさん
2005/10/12(水) 00:03:57あとC++じゃ関数の戻り値の型省略できない
0156デフォルトの名無しさん
2005/10/12(水) 00:48:50もっと冷静に150を読むんだ。
ナゾナゾだ。150のクラス(下の方のヤシな)で、最終的に
スレッドとして実行される関数はどーれだ?
答え: DWORD ThreadProc()。
じゃあもう一つナゾナゾだ。
ThreadProc() の中で、privateな変数は使えないか?
0157デフォルトの名無しさん
2005/10/12(水) 01:45:03もしかして基本的に関数の定義より先に関数の宣言をしないと、インライン化されるのですか?
0158デフォルトの名無しさん
2005/10/12(水) 01:50:55thisを渡してもダメでした
0159デフォルトの名無しさん
2005/10/12(水) 01:52:53別にインライン化されるとは限らない。
明示的に"inline"指定してもインライン化されるとは限らない。
ただコンパイラに「可能ならそうしてね」とお願いするだけ。
以上は仕様で決まっている話。
0160デフォルトの名無しさん
2005/10/12(水) 01:53:11関数定義するのが一番楽なんじゃないの?
0161デフォルトの名無しさん
2005/10/12(水) 01:54:19C++なら関数の前に宣言を書かないと規格違反
>何でクラス定義の中でメンバ関数を定義したらインライン化されるのですか?
規格でそう定義されてるから
0162161
2005/10/12(水) 01:55:000163デフォルトの名無しさん
2005/10/12(水) 01:58:430164デフォルトの名無しさん
2005/10/12(水) 07:31:220165デフォルトの名無しさん
2005/10/12(水) 07:32:320166デフォルトの名無しさん
2005/10/12(水) 07:42:07ShowWindow
0167デフォルトの名無しさん
2005/10/12(水) 09:33:260168デフォルトの名無しさん
2005/10/12(水) 09:36:40違う
デフォルトのアクセス制限がpublicとprivateの違いしか、
構造体とクラスにはない。
別に構造体でもアクセス制限はできる。
0169デフォルトの名無しさん
2005/10/12(水) 15:00:25そういや何で重複機能なのにclassとstructってあるんかな?
クラスのインターフェースたるpublic部分はクラス宣言の最初に来てる方が
見た目に分かりやすいしstructだけでも問題ないと思うんだけど
0170デフォルトの名無しさん
2005/10/12(水) 15:07:39D&EとARMを嫁
0171デフォルトの名無しさん
2005/10/12(水) 15:11:27D&Eには書いてなかったと思うが
ARM当たるよ
0172デフォルトの名無しさん
2005/10/12(水) 15:58:360173デフォルトの名無しさん
2005/10/12(水) 16:04:550174151
2005/10/12(水) 18:28:18>>154
VC++.NET 2003 stdでし
Win32 コンソールにて
勉強してて、ふと思って書いてみたらエラーにならんかったもんで。
と、いうことはVC++は、コンパイラとしてはあまり良くないんですか?
それともVC++は、あまりにバカバカしいエラーなんで、あきれたのか?
0175デフォルトの名無しさん
2005/10/12(水) 20:07:24fatal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
こんなエラーでたよ。
0176174
2005/10/12(水) 20:49:33えぇ!?なぜ俺だけ?
ファイル−新規作成−プロジェクト−Win32−Win32コンソールプロジェクト
−−アプリケーションの設定−空のプロジェクト
でつくりました。スレ違いなのでこれ以上は書きませんが、なんでだろ?
0177デフォルトの名無しさん
2005/10/12(水) 20:58:320178デフォルトの名無しさん
2005/10/12(水) 21:11:58んなこと言ってる時点で設計間違ってる。
RTTIについて勉強汁。
0179デフォルトの名無しさん
2005/10/12(水) 21:12:42そういうプログラムが必要になる自分の設計能力を疑うのが先。
0180デフォルトの名無しさん
2005/10/12(水) 21:16:29C++なら
#include <typeinfo>
typeid(なんちゃら).name() で型名が返される、がどう返すかは処理系依存
#include <cstdio>
#include <typeinfo>
#include <string>
using namespace std;
class Hoge{};
int main() {
int i;
const double PI = 3.14159;
Hoge hoge;
printf("%s\n", typeid(i).name());
printf("%s\n", typeid(PI).name());
printf("%s\n", typeid(hoge).name());
printf("%s\n", typeid(string("hoge")).name()); // テンプレートクラスはテンプレートも展開されるのでたいへん
return 0;
}
0181デフォルトの名無しさん
2005/10/12(水) 21:30:56BOOST TYPEOF
0182デフォルトの名無しさん
2005/10/12(水) 22:20:01#include <stdafx.h>
後氏ね。
0183デフォルトの名無しさん
2005/10/12(水) 23:07:15#include "stdafx.h"
0184デフォルトの名無しさん
2005/10/13(木) 00:10:43num = r1
if(r2 < num)
num = r2;
else if(r3 < num)
num = r3;
else if(r4 < num)
num = r4;
else if(r5 < num)
num = r5;
else print("hoge %d" , num);
のようなソースがあったとして、
例えばr3までnumが更新されて、r4で条件を満たさなくなった場合
r5 r6 は判定されなくなりますよね?
それをr2からr6まで判定して決めたいんですけど、どのように記述すればいいでしょうか?
0185デフォルトの名無しさん
2005/10/13(木) 00:13:40無理にif - else if で繋がず、if を繰り返すだけで医院で内科医?
0186デフォルトの名無しさん
2005/10/13(木) 00:13:55意味が分からん、とりあえずr1~r5の大小関係を書け
0187デフォルトの名無しさん
2005/10/13(木) 00:17:360188デフォルトの名無しさん
2005/10/13(木) 00:18:03そのコードだとr2<numがtrueと判定された時点でr3からr5は判定されない
全部判定させたいなら>>185
0189184
2005/10/13(木) 00:41:16ちょっとやってみます
>>186
r1〜r6はこの上で入力データーから計算で出すんですが
サンプルで順に(r1 r2 ・・・)
1100 850 850 1100 400 900
※このソースだとr2が出力されます。でもr5が欲しいです。
>>187
そういうことです。
0190デフォルトの名無しさん
2005/10/13(木) 00:54:22最小値なら、こうすりゃいいんじゃまいか?
int min = r1;
if (r2 < min) min = r2;
if (r3 < min) min = r3;
略
if (r6 < min) min = r6;
r1〜r6が配列にでも入っててくれればもっとすっきりした実装できるんだがな
0191184
2005/10/13(木) 01:04:44実は問題を読み違えてて・・・
最少数も出力しなきゃなりません。(;´Д`)
num = r1;
if(r2 < num) {
num = r2;
printf("hoge2 %d", num);
}
if(r3 < num){
num = r3;
printf("hoge3 %d", num);
}
if(r4 < num) {
num = r4;
printf("hoge4 %d", num);
}
if(r5 < num) {
num = r5;
printf("hoge5 %d", num);
}
if(r6 < num) {
num = r6;
printf("hoge6 %d", num);
} else printf("hoge1 %d", num);
としたんですが、今度は条件を満たしたところすべてが出力されてしまいます・・。
しかもr1〜r6でprintfの内容が異なります。
どうすればいいでしょう・・・
0193デフォルトの名無しさん
2005/10/13(木) 01:14:00struct min{
int num;
int name;
} min;
min.num = r1;
min.name = 1;
if (r2 < min.num) {
min.num = r2;
min.name = 2;
}
if (r3 < min.num) {
min.num = r3;
min.name = 3;
}
略
if (r6 < min.num) {
min.num = r6;
min.name = 6;
}
printf("hoge%d %d\n", min.name, min.num);
書いてから気づいたが、配列がまだなら当然構造体なんてやってないよな・・・
その場合は最初のstructで始まるブロック消して
int num, name;追加して、min.num, min.nameをそれぞれnum, nameに置換してくれ
0194184
2005/10/13(木) 01:25:18hoge1、hoge2とかはたまたま例として書いただけで数字を変えればいいって内容じゃないんです・・・。
個別にあります・・。それでelse ifを考えたんですけど>>184のザマです。
ループですみません;
0195デフォルトの名無しさん
2005/10/13(木) 01:31:49名前が別についてるのか?
それならchar name[10];ぐらい宣言しといてstrcpyでって手もあるが配列やってないんだよな・・・
眠くて頭はたらんのでパス('A`)
0196デフォルトの名無しさん
2005/10/13(木) 01:34:260197184
2005/10/13(木) 02:27:17宿題スレに書いてきました。
こちらにも全部書いてあります。
ここのスレの人どうもでした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/984.txt
0198デフォルトの名無しさん
2005/10/13(木) 04:39:00num = r1; v=1;
if(r2 < num){ num = r2; V=2; }
if(r3 < num){ num = r3; V=3; }
if(r4 < num){ num = r4; V=4; }
if(r5 < num){ num = r5; V=5; }
if(r6 < num){ num = r6; V=6; }
if(v==1){ printf("hoge1 %d", num); /* その他色々な処理 */ }
if(v==2){ printf("hoge2 %d", num); /* その他色々な処理 */ }
:
0199デフォルトの名無しさん
2005/10/13(木) 06:24:330200デフォルトの名無しさん
2005/10/13(木) 07:40:33KILLでもSTOPでもないんだし。
0201199
2005/10/13(木) 11:26:37ありがとうございます。もう少し詳しく教えていただけないでしょうか?
signal(SIGKILL,func)
とやっても、失敗(SIG_ERR)します。
0202デフォルトの名無しさん
2005/10/13(木) 11:49:41>>199では HUPシグナルを捕まえたかったんじゃないのか?
0203199
2005/10/13(木) 11:54:460204デフォルトの名無しさん
2005/10/13(木) 12:14:370205デフォルトの名無しさん
2005/10/13(木) 12:20:030206デフォルトの名無しさん
2005/10/13(木) 16:38:11ソートできるんですが?
0207デフォルトの名無しさん
2005/10/13(木) 17:05:490208デフォルトの名無しさん
2005/10/13(木) 23:04:030209デフォルトの名無しさん
2005/10/14(金) 01:34:40馬鹿発見
0210デフォルトの名無しさん
2005/10/14(金) 01:56:43じゃあ教えろ
0211デフォルトの名無しさん
2005/10/14(金) 02:19:27>>207
0212デフォルトの名無しさん
2005/10/14(金) 06:45:10この「L」って何なんですか?
普通の「0」とどんな違いがありますか?
0213デフォルトの名無しさん
2005/10/14(金) 06:49:400214213
2005/10/14(金) 06:52:340215デフォルトの名無しさん
2005/10/14(金) 07:06:14同じじゃん。longもlong intも。
0216デフォルトの名無しさん
2005/10/14(金) 07:08:210217デフォルトの名無しさん
2005/10/14(金) 07:25:440218デフォルトの名無しさん
2005/10/14(金) 07:30:34ありがと
0219デフォルトの名無しさん
2005/10/14(金) 07:39:420220デフォルトの名無しさん
2005/10/14(金) 07:40:00あ、素で理解できてないんだ。納得。
0221デフォルトの名無しさん
2005/10/14(金) 07:43:21説明もせずに、理解とかそういう言葉使うわけか。立派な詭弁ですね。
0222デフォルトの名無しさん
2005/10/14(金) 08:09:58C99でどうなったか追っかけてないが、手元のK&R C第2版にはこうある。
P45 2.3 定数
(略)大きすぎてintに収まりきれない整数もlongとして扱われる。(略)
とはいえ、Cの仕様ではintの幅 = longの幅ということも許されるので
intで収まらん数はlongでも収まらんという場合もある。
printf("%s", typeid(100000000000000).name());
↑を各コンパイラに食わせてみたら、VC++.NET 2003とBCC5.5.1は__int64と返し、
g++は「error: integer constant is too large for "long" type」とコンパイルエラーとなった。
0223デフォルトの名無しさん
2005/10/14(金) 08:14:00誰とは言わんが
0224デフォルトの名無しさん
2005/10/14(金) 08:51:53そんなレスしたってまた痛いこと言い出すだけから、
このスレのためにもスルーが一番だと思うよ。
0225デフォルトの名無しさん
2005/10/14(金) 09:13:44考えてみれば理解力が無いから煽ってるんであって、言うだけ無駄なんだよね。
0226デフォルトの名無しさん
2005/10/14(金) 09:35:420227デフォルトの名無しさん
2005/10/14(金) 09:46:55_itoa、_i64toa、_itow、_i64tow
_ltoa、_ltow
_ecvt
_fcvt
_gcvt
stringstream
strstream
0228デフォルトの名無しさん
2005/10/14(金) 09:48:53文字? 文字列じゃなくて?
0229デフォルトの名無しさん
2005/10/14(金) 09:50:510230デフォルトの名無しさん
2005/10/14(金) 10:10:17char s[100];
sprintf(s,"%s",nTableNo);
//FileNameを作成する
lpszFileName = strcat(lpszFileName,s);
なにか上手くいってないんですけど、なにか見落としてるところ
ありますでしょうか?
0231デフォルトの名無しさん
2005/10/14(金) 10:11:380232デフォルトの名無しさん
2005/10/14(金) 10:47:35lpszFileNameを書き換えてはいけません
書き換えたい場合は配列にするか動的にメモリを確保してください
(わかりづらい説明で申し訳ない‥‥リテラル、メモリなどでググってみて)
それとstrcatで文字列を連結しなくてもsprintfで連結できますよ
あとsprintfの第2引数は%sではなくて%dね
0233デフォルトの名無しさん
2005/10/14(金) 11:02:28sprintf(lpszFileName,"%s%d",lpszFileName,nTableNo);
ってやってみましたらOKです。ありがとうございます。みなさん感謝。
0234デフォルトの名無しさん
2005/10/14(金) 11:04:08猫を見てもいまいち理解できなかったのですが、、、
0235デフォルトの名無しさん
2005/10/14(金) 11:05:27こっちで聞いたほうがいいと思うよ
http://pc8.2ch.net/test/read.cgi/tech/1128951330/
0236デフォルトの名無しさん
2005/10/14(金) 11:11:57日を改めて書き込むことにするよ
>>235サンクス
0237デフォルトの名無しさん
2005/10/14(金) 11:36:38sprintf(lpszFileName,"_GRAPHSPEC%d" TableNo);
_GRAPHSPEC固定ならこの方がいいかもしれません
理由はlpszFileNameを第1引数と第3引数の両方に指定しているから。
lpszFileNameから読み込んだ内容がlpszFileNameに書き込まれることになり、
その動作は保証されていなかったと思う。(でも、ちょっと自信がないので詳しい人フォローを‥‥)
まぁ趣味のプログラム程度なら問題ないんだけどね^^
こんなこともあるんだな程度に‥‥
0238デフォルトの名無しさん
2005/10/14(金) 12:12:05誘導されてるんだから、移動する旨、誘導されてきた旨書き添えて書けば問題無いべ
0239デフォルトの名無しさん
2005/10/14(金) 13:16:47それではお言葉に甘えて
以降
http://pc8.2ch.net/test/read.cgi/tech/1128951330/
に移動します。
失礼しました。
0240デフォルトの名無しさん
2005/10/14(金) 17:23:44どこに置いておけばいいのでしょうか?
教えてください。
0241デフォルトの名無しさん
2005/10/14(金) 17:29:470242デフォルトの名無しさん
2005/10/14(金) 17:41:270243デフォルトの名無しさん
2005/10/14(金) 18:16:150244デフォルトの名無しさん
2005/10/14(金) 18:22:17int i;
void main(){}
C++だとエラーになるんですが、Cだとエラーになりません。
何でですか。
明らかにint iの再定義でエラーだと思うんですが
0245デフォルトの名無しさん
2005/10/14(金) 22:41:02while( scanf("%d" , &x) != -1 ){
だと-1を入力しても終わらないんだが・・・
0246デフォルトの名無しさん
2005/10/14(金) 22:42:010247デフォルトの名無しさん
2005/10/14(金) 22:43:450248デフォルトの名無しさん
2005/10/14(金) 22:44:54すれ違い
http://pc8.2ch.net/test/read.cgi/tech/1128354256/
0249デフォルトの名無しさん
2005/10/15(土) 00:31:27おいおい。実行ファイルのある場所=cwdなんて環境の方が少ないことに気付きたまえ。
0250デフォルトの名無しさん
2005/10/15(土) 00:50:21PCの環境変数にPathとかあるじゃないですか?
これって色んなアプリでとりあいになってるっぽいんですけど、
これってなんかうまい使い方あるんですかね?
何が問題かというとですね。
後から設定したものに始めに設定したものが消されてしまって、
始めに設定したアプリが動かなくなってしまうんですよ。
0251デフォルトの名無しさん
2005/10/15(土) 00:52:49必要なものを付け足していけば良いだけ。区切子':'(コロン)
0252デフォルトの名無しさん
2005/10/15(土) 00:52:49■ このスレッドは過去ログ倉庫に格納されています