1 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 11:40:35 ] C言語の入門者向け解説スレです。 教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題を片付けます 115代目 pc11.2ch.net/test/read.cgi/tech/1217741118/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 35 pc11.2ch.net/test/read.cgi/tech/1219761846/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
267 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 22:13:08 ] 入門じゃ無い方のCスレ、どっか行っちゃったからなぁ
268 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 22:22:07 ] 【初心者お断り】ガチ規格準拠C専用スレ Part133 pc11.2ch.net/test/read.cgi/tech/1201153965/
269 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 22:22:24 ] >>260 そうなんですか!知りませんでした どうもありがとうぐございます
270 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 22:37:22 ] コンパイラで最適化してくれるから、registerは使わなくてもいい
271 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 22:51:15 ] >>270 馬鹿は黙ってろ
272 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 23:02:44 ] registerは最適化が進んでいなかった大昔のコンパイラの名残だよ 人間の体でいったら盲腸のようなもの 組み込み系用のマイナーなコンパイラを使っているんなら別だが
273 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 23:14:46 ] ( ・∀・) (´・ω・ ≡ ・ω・`) (・∀・ )
274 名前:デフォルトの名無しさん [2008/09/22(月) 23:33:46 ] いざ、それを使う期に及んではマイナーかメジャーかって問題じゃあんめえ
275 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 01:31:14 ] 入門者が使う必要は無い でいいでしょ
276 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 05:59:28 ] 知識が昭和世代の古い人がいるみたいだね。
277 名前:デフォルトの名無しさん [2008/09/23(火) 06:49:20 ] 入門者が使う必要のない機能はない そいつが入門者を卒業するためにはできることからやってみるのみ
278 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 07:17:40 ] C99における可変引数マクロの、##の文字列連結についてお伺いします。 環境はGCCです。 #define a(fmt, ...) fprintf(stderr, "%s():: " fmt, __func__, __VA_ARGS__) #define b(fmt, ...) fprintf(stderr, "%s():: " fmt, __func__, ## __VA_ARGS__) a("x=%d", x);と書いたときは、「fmt」が「"x=%d"」、「...」と「__VA_ARGS__」が「x」に対応するので、 fprintf(stderr, "%s()::" "x=%d", __func__, x); と置換されますが、 a("x")と、引数を1つだけしか書かなかった場合には、 fprintf(stderr, "%s()::" "x", __func__, ); とfprintfの引数リストがカンマで終わってしまいコンパイルエラーになります。 そこで、b(fmt, ...)のように##演算子を使うと、問題のカンマが取り除かれるらしいのです。 ##は「パラメータ置換後に、両側の空白文字とともに各##も削除されて、 隣接するトークンが連結され、新しいトークンが形成される」、と K&R第2版で書いてあるのですが、カンマも取り除かれるようになったのでしょうか? それとも、これはGCCで通じる特別なものなのでしょうか? 長くなりましたが、よろしくおねがいします。
279 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 13:30:25 ] __VA_ARGS__でぐぐれ
280 名前:デフォルトの名無しさん [2008/09/23(火) 15:41:46 ] intなどの値をcharのような1byte区切りの配列として扱うには キャストを使うことができるでしょうか? 実際にやりたいのは 色々なデータのサイズをネットワークバイトオーダーに変えてから 0のバイトを省略して送りたいのです 例えば 00 ab 00 cd ならば ab 00 cd としたいのです 宜しくお願いします
281 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 15:45:03 ] int a に対して ((char *)&a)[1] とかやればいい
282 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 15:56:09 ] char a = (char)(x >> 24) char b = (char)(x >> 16) char c = (char)(x >> 8) char d = (char)x
283 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 15:57:39 ] シフトするならシフト幅はCHAR_BITから計算したほうがいい。
284 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 15:59:04 ] つhtonl
285 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:15:15 ] >>278 GCCの拡張です。 gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html#Variadic-Macros
286 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 16:35:06 ] >>280 >>281 のようにポインタ使うのでもいいし何度も宣言するようなら共用体使うとか
287 名前:デフォルトの名無しさん [2008/09/23(火) 17:08:55 ] 宿題臭がする
288 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 17:13:39 ] 00を取ったら可変長になるわけだけど、プロトコルとかどうなってるんだろう。 1バイトに縮めば、長さを別に持っていても節約にはなるか。
289 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:14:15 ] >>280 それだとデータの内容が変わってるけど問題は無いの? 送信時に 03 ab 00 cd みたいに長さ情報を付加するの? かなり高い確率で、受信側で次に送る送信データと連結されてしまうよ
290 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:45:30 ] >>281 >>282 >>283 >>286 みなさんありがとうございます 共用体も初めて聞くので調べてみます >>284 htonlの後出力する段階でどうしたらいいのかわからなくて >>287 宿題ではありません 個人的にサーバープログラムを書いています Cで本格的なプログラムを書くのが初めてなので >>288 >>289 00 00 ff ab 00 cd みたいな感じで特定のバイト列でサイズのサイズを表し 可変長にしようと考えてます
291 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 20:25:25 ] 他の既存のプロトコルがどうやってるのか勉強したほうがいい
292 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 20:45:45 ] >>291 具体的な例を教えて頂けるとありがたいです RFCの有名どころくらいしか知らないので
293 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:26:07 ] >>290 頼むから、そのサーバソフトはLAN内でのみ使ってくれよ。
294 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:26:11 ] UTF-8形式っていう手もあるよ可変長 負の値が送れないけど
295 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:28:40 ] バイナリのプロトコルでしょ?
296 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:33:14 ] 可変長で任意のビット数送るのにも使えるということを言ってるのでは
297 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:36:59 ] >>296 ああ、なるほど。
298 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:40:58 ] >>290 元データ 00 ab 00 cd ゼロサプレスしたデータ 00 00 ff ab 00 cd 長くなってるよ
299 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:49:01 ] まぁ別にその辺はプロトコルの話で、 C言語とは関係無いじゃん
300 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 22:43:23 ] 見た目の圧縮が目的ではないので長くなって構いません 理論的に大きさに制限の無いデータを全部受け取らなくても サイズを知ることができるデータ構造が欲しいのです そのような実例があったら是非教えて頂けると嬉しいです 例えばSMTPなんかは改行などが現れるまでデータの大きさが判りません 拡張でSIZEがありますけどサイズ自体が文字列だから 結局その大きさが判りません 無駄になるかもしれないデータを健気に受け取るより 最小のデータ受信で受け取るか判断できるようにして トータルで無駄を無くす仕組みにしたいのです >>294 >>296 ありがとうございます UTF-8調べてみます >>293 初めてのプログラムですしいきなり誰かに使ってもらうつもりは 毛頭ありませんが他の人に見てもらいたいと思って 真面目に取り組んでいるので 宜しければどの辺が駄目か御教授頂ければ幸いです
301 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 22:45:07 ] >>299 すみません 話し逸れてました 他で相談します
302 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 04:35:53 ] ヘッダにある構造体を定義して、何個かint型の変数を定義しました でも一番上に定義した変数だけ思ったとおりになってくれません 最初にその変数を使うときはおもいどおりの数なんですが 二度目以降からなぜか中身が変わってしまいます 変数名を変えてみたりしてもダメでした なぜか一番上に定義した変数だけなんです どういう可能性がありますか?
303 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 04:39:32 ] >>302 その構造体を晒してみて あと、環境とかも
304 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 04:54:50 ] BCC DeveloperでDXライブラリ使ってます 構造体は struct STATUS_D{ int w_x; int w_y; int pc_x; int pc_y; int pc_sx; int pc_sy; int menu_x; int menu_y; int data_x; int data_y; int time_x; int time_y; int m_x; int m_y; int c_size_x; int c_size_y; char menustr[5][STR_MAX]; int menu_num; int w_handle; int wb_handle; int c_handle[5]; int c_handle_num; }; です この一番上のint w_x;の値が変わってしまいます
305 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 05:13:31 ] >>304 構造体自体には問題ないね。きっとどこかでメモリ破壊をしているんだろう。
306 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 05:45:18 ] メモリ破壊してる所見つけるコツみたいなのあります? 全然わかんないです・・・
307 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 05:48:35 ] >>306 前後に文字配列を定義してないですか?
308 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 05:51:55 ] >>307 それよりこの構造体をどういう風にメモリに確保するか でも変わるしなあ。 たとえば構造体を配列にしてるとなると構造体内部の配列の 最大値をちゃんと管理してなくてメモリ破壊してるとか。 ただ構造体に情報をセットするのは構造体の先頭の領域から なら見かけ上正常に動いてるようにも見える。
309 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 05:55:22 ] 目視デバッグ
310 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 06:08:33 ] デバッガーでトレース 構造体のint w_x;の値を表示しておき、ステップ実行で値が変わったところを調べる
311 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 10:38:33 ] その構造体すでにfreeしてしまっているとか
312 名前:マジレスチュウ ◆MaJi/01g.w mailto:sage [2008/09/24(水) 12:54:50 BE:1465733467-2BP(0)] char型の配列周りが基本的に怪しいよね。 ちゃんとヌルターミネートされてるか、 配列のサイズよりも大きいものを入れる可能性がある場所はないか。 デバッガあるなら>>310 の方法で探すのが早いかな
313 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 19:34:37 ] #ifdef _DEBUG #include <stdio.h> //for sprintf #endif _DEBUGってなんですか?
314 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 19:39:57 ] ttp://www.wakhok.ac.jp/~kanayama/C/03/node112.html
315 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 20:47:47 ] >>313 VCではデバッグモードでコンパイルすると _DEBUGが暗黙のうちにdefineされる。
316 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 00:48:54 ] fgets(str, BUFSIZE, stdin); len = strlen(str); if(str[len - 1] != '\n') { printf("input line may be imcomplete\n"); while(str[len - 1] != '\n') { fgets(str, BUFSIZE, stdin); len = strlen(str); } } whileでstrの未処理の値を読み捨てているらしいけど、そこがしっくりこないんだが。 fgetsで読み捨てるって、具体的にどういう処理だ?><
317 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 00:53:57 ] >>316 モードが何かは知らんけど、読み捨てるって一定条件に達したら その後データが存在してても読まないだけじゃないの?
318 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 00:54:24 ] サイズをオーバーしたとき でもその処理そもそもエンターで入力終了と決め込んでるという点がダメな気もする
319 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 00:55:02 ] 316のはよくない例だな
320 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:01:28 ] すまん、学校の宿題というかプリントに乗ってるプログラムなんだ><w 実際は char str[BUFSIZE]; char dummy[4]; int a = 0, b, len; while(a >= 0) { printf("a, b = ? "); fgets(str, BUFSIZE, stdin); len = strlen(str); if(str[len - 1] != '\n') { printf("input line may be imcomplete\n"); while(str[len - 1] != '\n') { fgets(str, BUFSIZE, stdin); len = strlen(str); } continue; } if(sscanf(str, "%d %d %3s", &a, &b, dummy) != 2) { printf("input format may be imcomplete\n"); continue; } printf("a = %d, b = %d\n", a, b); } こんななってる。安全な入力方法の一つだそうで。 オーバー時のwhileの処理は、未処理のまだ残っている値のクリアが目的らしいんだけど、 fgetsでどうクリアするのかがよくわからん><
321 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:04:18 ] BUFSIZE以上の文字数が入力された場合にBUFSIZE-1で割った最後のあまりのみを有効にする、 かなり頭の悪いやり方。
322 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:11:01 ] continueがあるから違うだろ。 while(getchar()!='\n')で十分な気はするが。
323 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:17:36 ] >>322 そうそう、それでもいいって書いてあった。 あれか、未処理だった部分がstrに入ってくるんかね? んで、未処理だった値も処理されてクリアってこと?><
324 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:21:37 ] もし想定してるよりも長い文字列が入力されてれば 読み込みきれなかった分までstrに上書きしながら 順次読み込んでいって、以降するはずだった処理は 全部ぶっ飛ばしてまた最初からと言う方法を取ってる
325 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:26:05 ] ifの直後に同じ判定をwhileでするのは無駄だと思うけどな。 こういうときこそdo{}while使ってやれよw
326 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:28:40 ] >>324 ありがとうございます、なんとなく解りました。
327 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:32:44 ] >>325 ちゃんとみろ、それは的外れだ
328 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:35:20 ] >>327 if内に進んだ最初のwhileの判定はifでしたのとまったく同じだけど?
329 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:42:13 ] >>328 お前continueが見えてないの?
330 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:43:26 ] >>329 この話にcontinue関係ないw
331 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:48:29 ] >if(str[len - 1] != '\n') { これと >while(str[len - 1] != '\n') { これの条件判定が同じで、whileの一回目の判定が無駄だって言ってるんだが理解できてる?
332 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 01:52:17 ] まあ、こう言うときはこう直せば良いんじゃね? とソースを書けば一番手っ取り早いよねと横レス if(str[len - 1] != '\n') { printf("input line may be imcomplete\n"); do { fgets(str, BUFSIZE, stdin); len = strlen(str); } while(str[len - 1] != '\n'); continue; }
333 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 02:30:55 ] 自分の関数を周りに使わせたがる同僚にはどう対処したらいいですか?
334 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 02:33:02 ] 上司になっていいように使う。
335 名前:デフォルトの名無しさん [2008/09/25(木) 04:16:05 ] すまそ。。度忘れしてしまって、googleってもでてこないので、おしえて。 超簡単なことなんだけど、C言語の配列って宣言時にしか初期化できないんだっけか? しばらくC言語やってないもんで。。 よろしく。
336 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 07:39:47 ] 別に好きなとこで代入とかして初期化すればいいだろう それとも初期化子の使用のことか?それなら、宣言時にしか使えないな
337 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 08:34:04 ] strcpyとかstrcatとかsprintfとか使いまくってるんですけど やっぱバグおきますかね? 参考にしてるソースではstrcpy_sとかstrcat_s、sprintf_s使ってるんですが 私BCC使ってるので使えないんです(たぶん)
338 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 08:36:50 ] >>337 sprintf()でも%sや%fを生で使わなければ随分違うと思うよ。 例えば、%.20sとするとか%10fにするとかいっそ%gを使うとか。
339 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 10:27:10 ] >>337 _sの方を使ってても同じぐらいバグを出しやすいと思うよ。バグっても セキュリティホールになりにくいだけで。 C++のstringやらCStringを使うほうがいいです。
340 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 11:48:17 ] CのスレでC++の話をする奴って何なの?
341 名前:335 mailto:sage [2008/09/25(木) 13:37:47 ] >>336 そうです。初期化子のことです><; やっぱ宣言時にしかつかえないんですね><; 宣言時以降で、array[] = {1, 2, 3, 4, 5}; とかいう文をCでそういえばみないなあとおもって。 Javaとかの高級言語ばっかつかってたから、脳みそパープリンになってました。本当にありがとうございました><;
342 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 13:42:52 ] Cも一応高級言語なんですけぉ
343 名前:マジレスチュウ ◆MaJi/01g.w mailto:sage [2008/09/25(木) 22:29:03 BE:488578627-2BP(100)] >>337 バグ起きるかどうかは自分のコーディング次第じゃない? strcpy_sはBCCじゃ使えないけど、自分で作ればおk
344 名前:デフォルトの名無しさん [2008/09/26(金) 07:51:18 ] CPU 使用率を下げたいのなら、Sleep(0) ではなく Sleep(10) などと待ち時間が必要
345 名前:デフォルトの名無しさん [2008/09/26(金) 08:08:07 ] おれ=くさかべ先生
346 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 08:11:17 ] BUGなのに、偶然としてそれが表にでてこない。 そんなのがバグ。 人は間違えるもの、間違えた時の危機管理が問題であって、 完璧に間違えないように作るという方向では、危機を避けることができない 君がやっているのは問題の先送り。トラブルがでてから対処すればいいじゃん。 それが致命傷になる。
347 名前:デフォルトの名無しさん [2008/09/26(金) 12:39:51 ] 保険に入ってれば事故ってから対処すればいいじゃん、てのと同じだな 事故んねえように日頃から心がけることこそ管理しきれない危機への危機管理 どんなにセキュアなシステムでも使う奴がアフォでは結局危ない、という意味で > 自分のコーディング次第 に賛成
348 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 13:17:35 ] サイバーノーガード戦法?
349 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 13:38:21 ] 大学の授業をサボりぎみで、いつの間にかついていけなくなっていた俺に良い参考書はないですか? 基本まではちゃんとやっていたが、本格的に関数使い出したり二分木のあたりから\(^o^)/
350 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 13:38:57 ] if ( 条件1 ) { 処理1; if ( 条件2 ) { 処理2; } else { 処理3; } } else { 処理3; } 処理4; 処理3を1箇所にする書き方を教えてください。
351 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:01:43 ] if ( 条件1 ) { 処理1; if ( 条件2 ) { 処理2; } else { goto label; } } else { label: 処理3; } 処理4;
352 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:02:33 ] if (条件1 && (処理1, 条件2)) { 処理2; } else { 処理3; } 処理4;
353 名前:デフォルトの名無しさん [2008/09/27(土) 14:04:29 ] >>351 それはアウトだろボケ
354 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:10:57 ] switch (条件1) { default: 処理1; if (条件2) { 処理2; break; } case 0: 処理3; } 処理4;
355 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:12:03 ] >>351 goto使うならこうだな。 if ( 条件1 ) { 処理1; if ( 条件2 ) { 処理2; goto label; } } 処理3; label: 処理4;
356 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:18:15 ] >>355 goto入れる場所違わね?
357 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:24:28 ] 正しいと思う場所に入れてみたら?
358 名前:350 mailto:sage [2008/09/27(土) 14:38:05 ] 勉強になりました。ありがとうございます。
359 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 14:44:27 ] >>349 そのていどwebで十分
360 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 15:46:20 ] >>355-357 goto入れる場所変えたらどうにかなるもんでもないでそ。 >>355 のgoto文以外の並びじゃどうあがいても無理。
361 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 17:27:47 ] 皮肉もわからないのかお前は
362 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 20:19:29 ] か・・皮肉?
363 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 21:35:05 ] kuma-
364 名前:デフォルトの名無しさん [2008/09/27(土) 21:44:46 ] goto を教条主義的に忌避している者は、いざ使おうとすると付け焼き刃で桁下がりが出まくり
365 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:12:52 ] switch( !条件1 ){ case 0: 処理1; if( 条件2 ){ 処理2; break; } case 1: 処理3; }
366 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:17:12 ] しつこい
367 名前:デフォルトの名無しさん [2008/09/27(土) 22:57:13 ] Cに限らないかもしれないけど 0 < hoge みたいに比較演算子使うときに定数を左辺に持ってくる書き方は どのようなメリットがあるのですか?