1 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 22:34:33 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 19 pc11.2ch.net/test/read.cgi/tech/1190342593/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1191937213/
136 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 20:55:26 ] >>135 誤解しそうな関数 rand_xtoy( 9 , 10 ) が返す値の範囲は?
137 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:12:55 ] >>136 サッカー見ながら書いたら間違ったw int rand_xtoy(int lower, int upper) { return rand() / (INT_MAX + 1.0) * (upper - lower + 1) + lower; }
138 名前:137 mailto:sage [2007/10/17(水) 22:02:12 ] なんか寝ぼけてるようだ…orz int rand_xtoy(int lower, int upper) { return rand() / (RAND_MAX + 1.0) * (upper - lower + 1) + lower; }
139 名前:998 [2007/10/17(水) 23:01:00 ] >>126 ごめんなさい。 ソースはうpできないんです。
140 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:17:53 ] >>139 バッファオーバーフローにより、 書き換えてはいけないところが書き換えられているか、 未初期化のポインタを操作している可能性が高いです
141 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:43:32 ] >>139 「fopenでエラーが出る」と判明しているのなら、 ファイルオープンに失敗したNULLポインタを使ってるんじゃないの?
142 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 00:55:45 ] 分割コンパイルでなんかもうファイルの数がすげー多くなってきて makeかけたら結構の行いくんだよね。 1つのファイルに2、3個の関数書くもの?
143 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:18:25 ] myheader.h:20: error: 配列の型が不完全要素型を持っています 20行めの関数プロトタイプ void fileinput(char [][],int ); どういうエラーですか?
144 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:30:44 ] >>143 配列の要素数を省略できるのは最初の [ ] だけ。 void fileinput(char [][10],int ); とかにする必要がある。10 かどうかは知らんが。
145 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:40:41 ] >>143 >void fileinput(char [][],int ); 二次元配列を受け取る時は、一次元目の要素数を指定しなければならない void catch_two_dimensions_array(char s[][5] , int n){ int i; for(i=0; i<n; i++) printf("%s",s[i]); } int main(){ char str[3][5] == {"hoge" , "hage" , "func"}; catch_two_dimensions_array(str , 3); return 0; } なお、 void catch_two_dimensions_array(char (*s)[5] , int n); としてもおk(結局同じこと)
146 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:47:52 ] >>122 分岐しないで絶対値をとる方法です。(普通使いません) int abs(int x) /* |x| */ { int mask = x >>(CHAR_BIT*sizeof(int)-1); return (x + mask)^mask; } int minus_abs(int x) /* -|x| */ { int mask = x >>(CHAR_BIT*sizeof(int)-1); mask = ~mask; return (x + mask)^mask; }
147 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 02:06:50 ] >>122 1ライナーな符号変転(整数限定、マクロで書いてみた) #define NEGATIVE(x) (~x+1) これは有名だと思う。
148 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 02:42:08 ] >>142 1ファイルに関数1つなんて規則はない。 ある程度同じ関連のものは1ファイルにまとめた方が管理もしやすいと思う。 そのあたりは書いた人のセンスだろうが…。 1ファイル1関数にすると1関数の行数が多くなりがちと読んだことがあるが 本当なのかなぁ
149 名前:デフォルトの名無しさん [2007/10/18(木) 02:44:13 ] 関数を始める時に int kansuu(int a, int b, char *c){ という風に書きますよね。 これを int kansuu(a, b, c) int a; int b; char *c; { と書き換えることができると聞いたのですが、コンパイルが通りません。 後者の書き方は一般的ではないのでしょうか?
150 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 02:46:31 ] >>149 Cでは出来るがC++では無理だったかと
151 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 02:51:30 ] ということは古い書き方ってことですか。前者を使う方が良さそうですね。
152 名前:デフォルトの名無しさん [2007/10/18(木) 07:13:56 ] フリーのリンクソフトってある? あったら教えてくれ
153 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 07:30:13 ] >>55 のソースで予想通りの結果が出ません。 現在の時刻: 7:28:12.80 新しい時刻を入力してください:_ と表示されます。
154 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 07:33:05 ] >>153 .\time .\time.exe
155 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 07:53:16 ] >>154 ありがとうございます。実行できました。
156 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 08:48:38 ] 関数内に関数を書く方法は、いつできたのでしょうか? C言語作成当初からあったのでしょうか? (自分の環境がC99な為、C89等他の環境でもビルドできるか知りたいです)
157 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 08:50:57 ] C89じゃできないよ
158 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 14:17:05 ] >>156 大丈夫、C99でもできない。恐らくgccの拡張だろ。
159 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 14:38:12 ] >>関数内に関数を書く方法 C++でなおかつ関数じゃなくてクラスor構造体or共同体なら宣言できるが…。 gcc拡張使ってないから分らない… (ヲイヲイ)
160 名前:998 [2007/10/18(木) 16:03:26 ] >>139 >>140 ありがとうございます!! スタックサイズを無制限にしたら解決しました。
161 名前:デフォルトの名無しさん [2007/10/18(木) 16:04:49 ] >>156 gccの拡張。 また、gccでも、CではできるがC++ではできない。 例: void func(int x[], int y[], int n) { int i; double average(int x, int y){ return (x + y) / 2; } for(i = 0;i < n;i++) printf("%d\n", average(x[i], y[i])); } みたいな感じで使う(例が悪くてすまん)
162 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 16:25:47 ] 始めて知ったが、果てしなく謎だな。 カプセル化したいんならC++でやるべきだろ
163 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:29:20 ] pascalはふつーに関数を入れ子にできたから、昔はCにもあればいいのにって思ってたよ。
164 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:36:17 ] double a,b; if(b==0.0 || a%b!=0.0) { } がコンパイル通らないんですが、doble型の%演算は
165 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:36:48 ] ミスりました double a,b; if(b==0.0 || a%b!=0.0) { } がコンパイル通らないんですが、double型の%演算はできないんですか?
166 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:41:08 ] つ fmod 浮動小数点数の比較で ==, != を使うのはどうかと思うがな。
167 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:41:19 ] >>165 ないです。fmod関数を使ってください
168 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:43:20 ] わかりました!
169 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:46:27 ] どらえもんは何言語でできてるんですか?
170 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:49:21 ] >>169 Fortran
171 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:22:15 ] #include <stdio.h> int main (void) { int a=0xFFFA; printf("%d,%p",a,&a); return 0; } 仮に&aのアドレスが0012FF88だった場合に 1バイト目(FA)は0012FF88ですが、 int aの2バイト目(FF)のアドレス 0012FF89を 得るにはどうしたらいいでしょうか?
172 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:32:35 ] >>171 #include<stdio.h> int main(void){ int a=0xFFFA; printf("%d,%p\n", a, &a); printf("%p\n", (char*)&a+1); return 0; }
173 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:37:14 ] intのバイトオーダーはCPUによって異なる Windows(Intel)の場合はこうでなかったかな? 0012FF88 00 0012FF89 00 0012FF8A FA 0012FF8B FF
174 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:39:01 ] >>171 #include <stdio.h> struct int_filter{ char byte[sizeof(int)/psizeof(char)]; }; int main (void) { int a=0xFFFA; struct int_filter *f; f = (struct int_filter *)&a; printf("a:value->%d,address->%p",a,&a); printf("filter:[0]->%p,[1]->%p,[2]->%p,[3]->%p"f->byte,f->byte+1,f->byte+2,f->byte+3) return 0; }
175 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:41:14 ] 何故わざわざ構造体を……
176 名前:173 mailto:sage [2007/10/18(木) 20:42:23 ] まちがえたみたいね 無視してくださいw
177 名前:171 [2007/10/18(木) 20:48:12 ] >>172 できた〜〜〜ありがとうございます。 >>174 174さんのコピーして貼り付けたんですが、 コンパイルできませんでした。 初心者なのでソースが難しすぎてどこを直せばうごくかさっぱりですが どうもありがとうです。
178 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:56:25 ] >>173 sizeof(int)==4なら 0x00FFFAは FA,FF,00,00 でしょIntel系なら。 00,00,FF,FA の順ががモトローラ系(スペル忘れちった)
179 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 21:21:57 ] エンディアンの違いはいい迷惑。
180 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 21:51:54 ] >>177 >>174 のヤツ。 psizeof→sizeofのタイプミス 2つ目のprintf、閉じる方の「"」の後ろに「,」が無い。文の最後に「;」がない。 ミス自体は初心者レベルのモンだな。 まぁどうでも良いけどな・・・
181 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 22:35:06 ] スタックとキューの初歩を勉強してるんですが。 #include <stdio.h> #define MAX_SIZE 30 int stack[MAX_SIZE]; int sp = 0; void push( int x ) { stack[sp] = x; sp++;} int pop(void) { int x; x = stack[sp-1]; sp--; return x;} 〜スタックが空か判定(省略)〜
182 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 22:36:16 ] void show( void ) { int i; printf( "size = %2d:", sp ); for( i = 0; i < sp; i++ ){ printf( " %4d", stack[i] ); } printf( "\n" ); } int main() { push( 1 ); show(); push( 2 ); show(); push( 3 ); show(); printf( "pop: %4d\n", pop() ); printf( "pop: %4d\n", pop() ); printf( "すべてpopします...\n" ); while( !is_empty() ){ printf( " %4d", pop() ); } return 0; } スタックの内容を少しずつ表示していくものなんですが、 これだとpush関数とpop関数の所は場合によっては危ないよ、と言われました。 ポインタとか使ったほうが良いんでしょうか? 危ない、の意味すらわかりません。分かる人居たら教えてください。
183 名前:デフォルトの名無しさん [2007/10/18(木) 22:39:55 ] すたっくはSTLつかっとけ
184 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 22:40:20 ] たぶんpushやpopする前にバッファが残ってるかチェックしてないからじゃね たとえばpushしてないのにいきなりpopするとか
185 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 22:44:34 ] しかし、STLはC++という罠。 >>181 ようするにMAX_SIZE以上pushしようとしたときと、 空の時にpopしようとしたときにまずい。
186 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 22:48:17 ] 「危ない、の意味」をボカしてるのは、自分で考えさせようという親心? なら俺も黙っとく。
187 名前:デフォルトの名無しさん [2007/10/18(木) 22:48:19 ] >>181 ,182 pushする時にはオーバーフローしないか(配列から溢れないか)、 popの時にはスタックが空でないかチェックするのは鉄則 pushなら if(sp < MAX_SIZE) popなら if(sp > 0)でチェックすればいい
188 名前:186 mailto:sage [2007/10/18(木) 22:50:08 ] (´д`;)
189 名前:181 mailto:sage [2007/10/18(木) 22:58:36 ] 皆さんありがとうございます。 危ない、ってそれのことだったんですね。 push関数で最大値以上にpushしたらどうなるのか、エラー出てないし まあ良いかと思ってたんですが、油断していました。 (181の最後で「空かどうか判定」の部分は省略しましたが、 そこのことだと思ってました。) 自分でちょっと直してみます。
190 名前:デフォルトの名無しさん [2007/10/19(金) 06:02:19 ] #include<stdio.h> int main(){ char *str="test"; str[1]='s'; printf("%s\n",str); return 0; } これを試してみたのですが、何も表示されません。 どこが問題なのでしょうか?
191 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 06:10:36 ] 釣りにしか見えない
192 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 06:27:51 ] >>190 ポインタや配列に関する知識が中途半端な証拠
193 名前:デフォルトの名無しさん [2007/10/19(金) 06:37:35 ] char str[]="test";
194 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 06:42:43 ] >>190 それは処理系によって動作が異なる。 何も表示されないどころかエラー吐いて止まる場合もあるし、 >>190 の望みと思われるtsstを表示して正常終了する場合もある。 つまり、コンパイルできるからといって書いてはいけないコード。
195 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 06:43:49 ] 明らかに欠陥だな
196 名前:デフォルトの名無しさん [2007/10/19(金) 06:45:17 ] でも、とりあえずstr[1]='s'をコメントアウトして printf("%c",str); とした場合には、ちゃんとeが表示されます。 これってつまりstr[1]には文字が入っているということですよね。 では何故そこに代入することができないのでしょうか?
197 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 06:59:28 ] >では何故そこに代入することができないのでしょうか? そこってどこだと思う?
198 名前:デフォルトの名無しさん [2007/10/19(金) 07:11:28 ] 文字列の先頭アドレスからsizeof(char)一つ分進んだ所ではないのですか? そこにsを代入しようと思うのですが。
199 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 07:26:45 ] とあるビルの2階に手紙を届けたいが届けることが出来ない。なぜだろう? →そのビルへは階数に関わらず手紙を届ける事が禁止されている
200 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 07:32:38 ] こういう回りくどく説明してるのは傍から見てうざい
201 名前:デフォルトの名無しさん [2007/10/19(金) 07:34:31 ] ポインタに代入した文字列はconstなんですか?では何故コンパイルエラーが出ないのでしょう? 出ないにしても、代入が無効になるだけだと思うのですが、表示すら何もされなくなるのは何故なのでしょうか。
202 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 08:46:11 ] 文法的に正しくても配列のメモリ格納形式が処理系異存だから うまくいかない環境もあり,うまくいく環境もある
203 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 08:48:31 ] >>201 配列とポインタが同じように扱える保証はないからな
204 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 10:52:15 ] プログラムの勉強を始めようと思って、分りやすい教科書を 探しているんですが、何かおすすめの本てありますか? 今手元にあるのはメディックエンジニアリングの「これから はじめるC言語基礎の基礎」という本なんですが・・・・
205 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 10:58:28 ] nai
206 名前:デフォルトの名無しさん [2007/10/19(金) 11:50:24 ] >>202-203 いやでもやってることは、文字列の先頭から2バイト目に文字を代入する、ってことですよね? 配列で宣言してもポインタで宣言しても、データがメモリに連続で格納される、という点は変わらないはずです。 いくら処理系依存と言っても、配列だけ何故か1KBごとに飛び飛びで格納する、 なんてトリッキーなことはしていないと思うのですが、しているのですか? もしそうならば、わざわざ配列の格納方式だけ処理系依存にする意味なんてあるんですか?
207 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 12:04:51 ] >>206 文字列リテラルと配列の区別をつけよう。
208 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 12:05:18 ] とりあえずさ、 >>190 のコードで実際にどんな値が入ってるか、確認してみれば? printf("%d" , str[1]); %cじゃなく%dで もし代入失敗してるなら代わりに何が入ってるか確認できるし
209 名前:デフォルトの名無しさん [2007/10/19(金) 12:12:01 ] >>207 機能として違うのはわかりますが、メモリの格納方式まで別々にする意味は何でしょう? 単に不便にしているだけとしか思えないのですが。 >>208 同じ値が入っていました。さすがにこれはおかしいと思い、VCのモードをReleaseに変えたら動きました。 しかし根本的な問題解決にはなっていません。何故こう無駄に不安定なのか…
210 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 12:27:50 ] 無駄じゃないだろ
211 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 12:30:35 ] >>209 「このモジュールはデバッグモードでコンパイルして こっちはリリースモードでコンパイルしないとダメだからな」 嫌すぎる…
212 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:22:06 ] >>209 文字列リテラルを使うときに、メモリを節約できるから。 つまり、次のコードは、同じ値を出力するかもしれない。 # コンパイラとオプションによって変わる -- void exsample() { const char * foo = "abcde"; const char * bar = "abcde"; printf("%p, %p\n", foo, bar); } -- 勿論、次のコードは只の配列だから違う値が出力される。 void exsample2() { char foo[] = "abcde"; char bar[] = "abcde"; printf("%p, %p\n", foo, bar); }
213 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:23:23 ] げ、どうでもいいけど関数名がtypoだ _/ ̄|◯
214 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:29:26 ] 自分が間違ってんのに仕様の方に文句をつけるやつは、Cどころか学習自体に向いてないよ
215 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:56:58 ] 新しい言語作ればいいと思うよ
216 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 15:42:13 ] #include <stdio.h> int main (void){ double a,b,c,x; printf("Please type 1st Number >> "); scanf("%xf",&a); printf("Please type 2nd Number >> "); scanf("%xf",&b); printf("Please type 3rd Number >> "); scanf("%xf",&c); x=(a+b+c)/3; printf("Average = %xf\n",x); return 0; } なぜか、計算結果が違う・・・ %f が違うんでしょうか?
217 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 15:46:25 ] >>216 %xf を %lf にしてみたらどうかな?
218 名前:215 mailto:sage [2007/10/19(金) 16:07:13 ] >216 ありがとうございました。
219 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 20:17:42 ] >>201 文字列リテラルの内容を書き替えるプログラムの挙動は未定義。 文字列リテラルの型はchar配列となっているが、これは過去との互換性のため。 蛇足だがC++ではconst charの配列となっている。 (ただし、またも互換性のためchar*への型変換は定義さらている) >>206 組み込みではROMに配置できるようになる。 Windowsなど高水準なOSでは、規格の規定から 文字列リテラルの書換はするべきでないと 認知されているため、文字列リテラルが 格納されている辺りを読取専用にする。
220 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 21:09:41 ] まぁ結局ROMに配置すんのもメモリの節約だし、 「メモリの節約のため」でまとめちゃってもいい気もするけどね。 なんかメモリの節約以外の理由で文字列リテラルはROMのが良い理由があったら、 後学のために教えたって欲しいかも。
221 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 21:39:11 ] まぁROMは遅いから結局実行時にRAMにコピーしちゃったりるすんだけどね
222 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 22:18:08 ] 開いたりしていないファイルポインタを fclose(fp); とすると、どうなるのでしょうか?
223 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 22:21:13 ] fclose関数でエラーが返されると思います。
224 名前:デフォルトの名無しさん [2007/10/20(土) 12:19:02 ] >>222 詳しく言うと、エラー時にはEOFが返される。 成功時は0が返される。
225 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:31:04 ] その前に開いてない fp ってどっから持ってくるんだ NULLかゴミ値じゃねぇの?
226 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:47:34 ] FreeBSD系だとfcloseにNULLを渡したら例外が起きるらしい。 以下はMac OS X Tigerのfclose(3)から引用 > The fclose() function does not handle NULL arguments; they will result in > a segmentation violation. This is intentional - it makes it easier to > make sure programs written under FreeBSD are bug free. This behaviour is > an implementation detail, and programs should not rely upon it. 実際にfcloseにNULLを渡してみたらsegvが発生した。 おっしゃるとおりの御利益はあるかもしらんが、ちゃんと規格に準拠しようぜ…
227 名前:デフォルトの名無しさん [2007/10/20(土) 18:16:47 ] 例えば const char test[] = {"abcdef"}; で cとdの間に0x04を入れたい場合どう書けばよいのでしょうか
228 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 18:31:08 ] "abc\x04def"
229 名前:227 [2007/10/20(土) 18:42:47 ] 了解
230 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 19:12:41 ] "abc\04def"とも書けなっかったかな。 \04は8進表記。
231 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:04:00 ] doble型の変数をprintfで表示するときには整数で表示するにはどうしたらいいですか?
232 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:08:21 ] double x = 1; printf("%d\n", (int)x); こうか?
233 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:08:42 ] >>231 %.0f
234 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:09:56 ] >>232 >>233 どちらでもできました!ありがとうございました
235 名前:デフォルトの名無しさん [2007/10/20(土) 20:30:34 ] 今までCとC++は同じものだと思っていたけれど、 MFCを使ったC++プログラミングは、C言語と似ているようで 似ていないですね。
236 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:36:52 ] C++はCの拡張だから、Cと同じように書くこともできる 単にC++をCとして使ってただけだろ