[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 17:25 / Filesize : 118 KB / Number-of Response : 502
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 38



1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:15:31 ]
C言語の入門者向け解説スレです。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
  C/C++の宿題を片付けます 117代目
  pc11.2ch.net/test/read.cgi/tech/1225320579/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
  C言語なら俺に聞け(入門篇) Part 37
  pc11.2ch.net/test/read.cgi/tech/1224000127/
過去スレ
  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

369 名前:デフォルトの名無しさん [2008/11/05(水) 22:23:38 ]
>>368
甘いんだよ、後出し設定なんか聞いてやらん

370 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:40:38 ]
>>369
お前教科書って聞いて何思い浮かべたの?

371 名前:368 mailto:sage [2008/11/05(水) 22:42:33 ]
後出しも何も俺>>356じゃねえよ?
寒くなってきたんだから布団にすっこんでぽかぽかになっとけよ

372 名前:デフォルトの名無しさん [2008/11/05(水) 22:45:49 ]
で、別人のふりくらいしかすることなくなったわけか

373 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:48:16 ]
このスレには極端にレベルの低い小学生が二人いるのかな

374 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:49:49 ]
よそでやれ

375 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:58:36 ]
次の方どうぞ〜♪

376 名前:デフォルトの名無しさん [2008/11/05(水) 23:53:51 ]
>>316
それ好きな人が身近にいる。else ifだとデコボコになるからこれが好きとのこだ。
そいつは、構造対のメンバ名が長い時も、最初にそのメンバのアドレスを短くて意味のわかるポインタに移す。
最初は何でいちいちそんな事すんだよとか思ってたが、正直、そいつのソースは読みやすい。
好みだな

377 名前:デフォルトの名無しさん [2008/11/05(水) 23:59:17 ]
確かに、構造体ん中に構造体ある時とか、長くなるね。




378 名前:デフォルトの名無しさん [2008/11/05(水) 23:59:33 ]
複数ソースファイルがあるとき
ソースファイルその絡みがあるじゃないですか
例えばその値がどこから来たかを見つけたいとき
どうやればいいのですか。



1.c
から
10000000000000.c
くらいまであるとして

そのうちの23460001.cにある関数から
5986293.cに渡されたとしたら
わからないじゃ
ないですか

5986293.cのincludeには782365.cと23435.cしかない
というように、「渡りに渡って行き着いた」やつは非常に見つけにくい。

379 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:01:30 ]
>>378
それは設計が悪くないか?

380 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:01:38 ]
__FILE__

381 名前:デフォルトの名無しさん [2008/11/06(木) 00:01:42 ]

ゲームに限らず、携帯電話やATMなど
「仕事」のソースは例外なく大量のファイルに分かれているのに


「この値はどこから来たのか」
「それをはじき出すものはどこにあるのか」

っていうコメントがないことがほとんどです!!!!!!!!!!!!!!!!!!!!!!!!!!


382 名前:デフォルトの名無しさん [2008/11/06(木) 00:04:02 ]
>>378
Java見たら泣くよ

383 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:04:39 ]
今時デバッガ使えば、その時点でどの関数がどの関数を呼び出しているかなんてすぐ分かる。
それとは別に、プログラムを実行させなくても静的に解析するツールだってちらほら存在する。

384 名前:デフォルトの名無しさん [2008/11/06(木) 00:06:47 ]
研修期間中に読んだものの中で最長の渡りが

30ファイル先

まず先に値を出す1.c -> それを利用する2.c -> 2.cで出た値を利用する3.c .................................................


30.cだけ見ると、「この値はどこから来たの」ってことしか分からず、
includeを見て追っていくと何十も何百も元のファイルから来てたとわかるのみです。
しかもそのincludeも、標準ライブラリ除いて20くらいincludeされていることもザラで
それら全部調べるとなるとたいへんな時間がかかります!!!!!!!!!!!


今仕事でバリバリやってる人らはどうやって調べているの


385 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:07:21 ]
>>378
1.関数呼び出しの構造図を書く

func_a
func_b
func_c
func_d

2.データフローを書く
func_a - x ->func_b


386 名前:デフォルトの名無しさん [2008/11/06(木) 00:08:38 ]
関数呼ぶ→さらに中で関数呼ぶ→さらに中で関数呼ぶ→さらに中で関数呼ぶ→さらに中で関数呼ぶ・・・・
きつい時あるね


387 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:09:43 ]
>>386
でも昔のDOSのころのようなミニマムな開発じゃなければ
そういうのはざらでしょ。



388 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:10:14 ]
保守って点から見りゃ、およそ最悪だろ。

389 名前:デフォルトの名無しさん [2008/11/06(木) 00:14:51 ]
>>386
みたいなのをどうしても調べにゃならん時に、たどり着いたソースが新規1985年だったのがある。俺産まれた年(笑)
昔の人は英語好きだよね〜JISに対応してなかったのかね〜

390 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:18:22 ]
>>389
時代的にはこんな感じだよ。
マシンによるんじゃないかな?

www.eonet.ne.jp/~building-pc/pc/pc1985.htm


391 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:22:45 ]
とりあえずincludeで追いかけるってのはありえない
ライブラリならドキュメントがあるはずだし
ソースがあるならgrepかければ済む

392 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:32:05 ]
for(;;)
{
int d = 0;
(dを用いた適当な処理)
}

int d;
for(;;)
{
d = 0;
(dを用いた適当な処理)
}
を比べると上のほうがオーバヘッドが大きいでしょうか?
dはfor文内でしか利用しませんのでスコープを限定したいのですが.

393 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:32:14 ]
以前、関数から参照する外部変数や値の影響についてなどを関数仕様書に書いた。
すると技術の若造が「そういう事は止めてくれ。」と言われた。
「どうして?」の問いに、「そんな事を書いたら分かっちゃうだろ。」の回答。

C言語好きでNE○の系列会社に入社する奴はヲタクなお山の大将が多かった。

394 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:34:30 ]
>>393
ドキュメントとソースの乖離が発生することを懸念して、じゃなくて、分かっちゃうからってところがwww

395 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:35:35 ]
>>393
日本語でおk

396 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:38:36 ]
>>392
{
int d;
for(;;)
{
d = 0;
(dを用いた適当な処理)
}
}

とかは?
これってgccしかできなかったっけ?

>>393-394
意味がわからねえw

397 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:40:28 ]
メーカー製の場合、見えてはいけないものが多い。

特に地上デジタル放送関連は、結局はドライバで制御している以上、

「バレるとB-CASなしでも見られてコピーし放題」って芸当も出来るようになる。



398 名前:デフォルトの名無しさん [2008/11/06(木) 00:50:07 ]
コメントなしね〜HTMLならしかたないとこあるけどね〜


399 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:52:21 ]
>>397
外に見せる?資料と内部では違うだろ・・
内部のものまで「書かない」が徹底されてるのか?

400 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:56:22 ]
>396
VC6なんで出来るけどステートメントが深くなるからあんまりやりたくないです.

それよりfor文の中に入れたときに何度もdが宣言されるけどそのときのオーバヘッドが気になります.

401 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:57:17 ]
>>393 ソフトさんですか。

402 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:59:12 ]
オーバーヘッド気になるなら実測なりアセンブリ見るなりすればいいだろ。

403 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:59:44 ]
for(ここにおけば?;;)

vc6だとグローバルスコープだったような気がするけど
でもそれはc++だったような期もするけど

404 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 01:03:51 ]
>>400
宣言文は実行ステートメントではないから、
実行時のオーバヘッドにはならないだろ。

405 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 01:06:48 ]
           ____
  .ni 7      /ノ   ヽ\  内部にも見せないよ
l^l | | l ,/)   / /゚ヽ  /゚ヾ\      .n  以前、それで営業がポカやらかしたし
', U ! レ' / /   ⌒   ⌒  \   l^l.| | /) 絶対に流出させられないから
/    〈 |  (____人__)  |   | U レ'//)
     ヽ\    |lr┬-l|   /  ノ    /
 /´ ̄ ̄ノ    ゙=ニ二"   \rニ     |
                      `ヽ   l


406 名前:デフォルトの名無しさん [2008/11/06(木) 01:41:40 ]
B-CAS廃止されたんじゃなかったか?

407 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 01:48:54 ]
まだよ



408 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 01:51:04 ]
>>401
妙に納得した。

>>392
そのケースなら、コンパイラはどちらも同じようにコンパイルしてしまう。
スコープを限定してくれた方が読むにも判り易いからどんどん限定してくれたまえ。
# それこそ某N∈Sみたいな所の仕事だと全て関数の先頭で宣言しろとか言われかねないけど。

409 名前:393 mailto:sage [2008/11/06(木) 02:10:15 ]
>>397
そういうカッコいい理由ならまだいいんだがw
NE○の通信系には変な田舎者の高専や専卒出身の奴が多いのは確かだよ。
カモフラージュ気取りのアメージングコード、騙しの#includeなどは当たり前。
例えば、ANSIの定数をコソーリとトリッキーなビットシフトで何重にも再定義してたりで
デバッガで動かすと、EOFが5に見えたりするんだが、奴らはその自分達の技術に対する
他人の反応を見て楽しんでたんだよ。(家で人知れず独りでオナニーしてろってwww)

>>401
昔はT芝相手で設計部門向けのCADなどのソフトもやってましたよ。その他にも監査に
似た評価・検証系もしてたので、よく使うコンパイラ数本のC標準ライブラリのヘッダやソースまで
ほぼ暗記してました。

410 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 09:12:19 ]
>>352
遅レスだけど、エラーの指摘はTURBO C1.0対MS-C3.0の頃からborlandの方が出来が良い。
使いやすさじゃ勝負にならないけど、学習用途なら色々動かして、気に入った物を使うといいよ。

411 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 09:12:56 ]
悪いがマ板でやってくれ

412 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 15:14:28 ]
>>378
やっぱ一回実行して呼び出しスタック覗くのが一番早い気が。
gdbにもあったはずなんで、大抵の環境で可能だと思う。

413 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 17:19:50 ]
fnameに/home/usr01/c_nara_orenikike/1th/2th/3th/4th/5th/6th/7th/8th/3.data
とかはいってたとして、次のファイル操作
printf("%s",fname);

if((fp = fopen(fname, "rb")) == NULL ) {
fprintf(stderr,"ERR;入力ファイル error;read_inputfile\n");
exit(EXIT_FAILURE);
}

これをかいて実行すると開けないってエラーがでるんですけども。なぜだと
考えられますか?ちなみに、emacsから/home/usr01/c_nara_orenikike/1th/2th/3th/4th/5th/6th/7th/8th/3.data
だと開けます。開けるからわからないんですけど。ファイルネームにラストに改行はいってるみたいで。
ただそれでエラーがくるのかと。3.dataはバイナリのデータです。

414 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 17:26:44 ]
改行入ってたら、実際のファイルの名前にも改行入ってないと開けないぞ

415 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:13:23 ]
>ただそれでエラーがくるのかと
ファイルを指す文字列をどう解決するかは当然OSに依存する
あいにく君の使っている環境は、末尾の\nを排除してファイルを探すことができなかった
それだけのことであって、そもそもCの話ではない

416 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:14:42 ]
C言語を志すならばやはりK&Rは買わないとダメでしょうか?



417 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:17:30 ]
別になくても困りはしないよ



418 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:19:39 ]
もちろんあったほうがいいけど必須ではないよ
CFAQを読んだ上で、規格合致ギリギリのラインを攻め込んだりしない限り問題ないと俺は思う

419 名前:デフォルトの名無しさん [2008/11/06(木) 18:20:37 ]
>>416
K&R自体は買わなくても他に手はいくらでもあるが
たかが3千円弱の自己投資をためらうようならお先真っ暗だ

420 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:22:34 ]
買ったけど内容は入門書と変わらない
正直要らないよ

421 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:24:44 ]
K&Rってのは、C言語をマスターしている人間が買う入門書。

マスターしてるなら買うわけないじゃん、と思うだろうが
まさにその通り。

あの本は、読んでる人間はC言語を完全にマスターしてること前提で書いている。


辞書で言うならこんな感じだな

レバレッジ
 株用語のひとつ。

リスクヘッジ
 リスクをヘッジすること。


ってな

422 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:56:30 ]
>>416
優れた医者は毒を薬とするという例えがあるようにその本を毒とするか薬とするかは自分次第
他人の評価を聞いて悩むより本屋でちょっと覗いてみて興味を持ったら買うのが一番
図書館で借りたって良いんだしさ
百聞は一見に如かずだよ

423 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 19:50:09 ]
>>416
そうそう、積読の価値はあると思います。いつか、ふとしたときに手にとって、おもわず読みふけってしまう、ということがあると思います。

424 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 21:41:57 ]
>>421
そんなことはない。
Prefaceに書いてあるとおり、他の言語は知ってるけど、C言語は
知らないって人向け

Cの文法は知ってるけど、書き方を知らないような人にも向いてると思う




425 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 21:44:04 ]
でも本に書いてあるものは全部よい書き方だと思っちゃうようなひとには向いていない

426 名前:デフォルトの名無しさん [2008/11/06(木) 22:04:00 ]
「よい書き方」について論じている本ではないことくらいわかれ・・・・無理なのか?

427 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:00:10 ]
趣味でプログラムを覚えようと思うのですが、最初はC言語でいいんですよね?
おすすめの入門書、サイトがありましたら教えて下さい。



428 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:04:30 ]
>>427
いきなりCだなんて。えっち。
それはともかく、おすすめしない。

429 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:12:41 ]

time_t tp;
time(&tp);
sprintf(buf,sizeof(buf),"%Y%m%d",localtime(&tp));

↑こんな感じのを

sprintf(buf,sizeof(buf),"%Y%m%d",localtime(time(&tp));

↑こんな感じで一行で書きたいんだけど。

もちろん、この書き方が駄目なのは分かるんだけど。

関数の戻り値のアドレスを渡したいんだよねー



430 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:13:07 ]
はじめてのC

431 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:14:31 ]
>>429 上のもダメですが

432 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:16:55 ]
>>429
なんでこだわるの?



433 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:18:29 ]
つーか、それstrftime()の間違いだろ。

434 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:51:25 ]
>>427
 C言語に興味があるのならC言語にすればよい。
入門書は、本屋に置いてあるのでいいと思うよ。
例えば、ポニョのとかLepton先生のとかカニハンのおっちゃんのとか。
ああ、でも『はじめての~』は買わない方がいいと思う。
厨房のとき読んでコードギアスの2ndOPになった。
あまり評価高くないけど、河西本とかもオヌヌメ。もう記述が古いけど厨房でも理解できた。
 ウェブサイトは、使わない方がいいよ。コピー&ペーストで終わらせようとする衝動に負けるだろうから。
手で打って覚えるんだよ。目でコードの美しさに感動するんだよ。体でプログラミングの楽しさを感じるんだよ。

 本気でC言語を使って思い通りにプログラミングできるようになりたければ、
他人の評価は気にせずに自分の直観を信じて本を読んでいった方がいいよ。
そのレビューをした人と自分の言語理解度が必ずしも同じであるわけではないのだから。
1冊読んでいい気になるなよ、そこの自称中級者。

 うわっキモ。米大統領選:オバマ氏、共和党地盤・インディアナ州奪取 まで読んだ。

435 名前:デフォルトの名無しさん [2008/11/07(金) 00:15:14 ]
猫Cのこのページ
ttp://www.kumei.ne.jp/c_lang/intro/no_13.htm

のPGMをコーディングして実行したんだけど
結果が
「time1=1225984391 time2=0」となってしまう。

printf ("time2=%ld\n",t2)
と単独で出力すればちゃんと「time2=1225984392」になる。

何が間違ってるんでしょうか

436 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 00:16:03 ]
実行環境はMicrosoft Visual C++ 2008 Express Editionの
Win32 コンソールアプリケーションです

437 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 01:35:33 ]
TCP/IPのソケットを使って互いに通信するプログラムを作りたいのですが、正直さっぱりわかりません
どこか詳しい説明とサンプルプログラムがあるサイトはないでしょうか?



438 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 01:38:07 ]
ほれ
x68000.q-e-d.net/~68user/net/


439 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 02:21:40 ]
>>435
%ld に対応するのは long 型であって、time_t 型ではありません。
long 型と time_t 型のサイズが等しい環境では上手くいくかもしれませんが、
あらゆる環境で常にそれが成立するわけではありません。

440 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 02:57:52 ]
ネコなんかで勉強しようなんてするから嵌まるんだ。
long(t1)とでもすれば"%ld"で出力されるだろ。

441 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 09:14:22 ]
>>440
やってみたけどダメです。。。

じっさい、t1のほうは「%ld」でちゃんと出力されてるんですが。
ブレイクポイント設定して見てみるとちゃんと変数の中身は変わってます。

なのに「"\ntime1=%ld time2=%ld\n"」で標準出力するとtime2=0 になっちゃう

442 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 09:41:07 ]
>>441
64bit環境?
%ld のかわりに、%I64d でやるとどうなる?

443 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 09:54:50 ]
って環境は>>436
time_tは
typedef __int64 __time64_t; /* 64-bit time value */
typedef __time64_t time_t; /* time value */
だから64bit整数だな。%I64dか%lldで。

444 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 09:57:58 ]
つーか、longが64bitじゃないんだから、>>440でいいはずだな。
>>441はなにをやってみたんだ?
printf("\ntime1=%ld time2=%ld\n", long(t1), long(t2));だぞ?

445 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:07:02 ]
>>444
その通りやってみたんですがダメですね・・・

printf ("time2=%ld\n",t2)

だと正常に出力されるので%ldの型指定に問題があるとは思えないのです。

なんで0が出力されるのか、全く見当が付きません・・・

446 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:12:17 ]
本についてるプログラム(C言語を習得する類の本ではありません)で
ただのint型変数にファイルから100000という値を読み込んでる
ものがあったんですが、一般的に見てこのコードは正しいんでしょうか?

447 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:13:42 ]
>>446
どのあたりが疑問なんだ?



448 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:21:58 ]
>>447
int型で表せる値の範囲についてです。
環境によるかもしれませんが
参考書には-32767〜32767と載っていたもので

449 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:23:22 ]
>>445
えーとだな、まず64ビット整数はたとえば0x0000000012345678 という数値なわけだ。
これをスタックに積んで、32ビットで取り出すと、0x12345678 と 0x00000000の2つの数字がとれるわけ。
なんで2番目が0になるかわかったろ?

450 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:26:17 ]
>>445
>printf ("time2=%ld\n",t2)
この場合も、0x0000000012345678を積んで、0x12345678だけ取り出したから
たまたまうまくいってるように見えるだけで、上位32ビットは切り捨てられている。

451 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:26:44 ]
>>448
それは少し古い時代のint型だな
今は大抵4バイトなんで-2147483648 to 2147483647 を表せることが多い


452 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:26:45 ]
intが16ビットなんて8ビットパソコンの時代じゃないか(80年代)
参考書が古すぎ

453 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:35:38 ]
>>451
そうですか、分かりました。
どうもありがとうございます。


454 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:52:02 ]
>>449-450

ありがとうございます。上手くいきました。

t1-long(t2) ってやってました。>>445を読むまで理屈が判りませんでした。

VC6とかだと上手くいってたのかな?サンプルコードも油断ならないですね

455 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 10:56:54 ]
× >>445を読むまで理屈が判りませんでした。
○ >>449を読むまで理屈が判りませんでした。

安価間違えたorz

456 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 11:00:00 ]
>>454
long(t1)は、time_t型のt1の値を、long型にキャストすると言うことだ。
t1 - long(t2)では、time_t型のt1からlong型にキャストされたt2の値を引こうとしてしまうので、
time_t型の実態であるlong long型にキャストして引き算を行なってしまうので結果はlong long型のまま。
引き算する場合はlong(t1 - t2)としなくては意味がない。

そもそもtime_t型は実態が32ビット整数だった時代が長いから無理もないとは思うが、
32ビット整数である保証がないのでちゃんとキャストするべき。それをしていないサンプルは、当てにならないと言うこと。

尚、time_t型同士の引き算は本来なら、difftime()を使うべき。

457 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 11:09:00 ]
>>456
結局のところ、printf("%g\n", difftime(t1, t2))ってことね。
# だからといって、printf("%g\n", difftime(t1, 0))する奴ぁいねぇと思うが。



458 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 11:34:56 ]
対角要素に0があっても正しく動く逆行列を求めるソースおちてないですかね?

459 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 12:48:52 ]
同じx86-64bitでも、Windows系の64と、Unix/BSD/Linux系の64アーキテクチャの違いも・・・

460 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:07:30 ]
>>427
自分もプログラミング入門者なんだが、苦しんで覚えるC言語ってサイトがわかりやすいと思う

お互い頑張りましょう。

461 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:13:02 ]
>>446
コードそのものは正しい
16bit環境には対応していないというだけ

462 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:23:20 ]
>>460
俺も昔、苦しんで覚えたなw
血便、下血、終電、睡眠デバッグ・・・

463 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:32:19 ]
>>460
「苦しんで覚えるC言語」リンク先のsetjump/longjump
>プログラムの流れをグチャグチャにする凶悪な関数であり、よほどの事情でもない限り使用してはいけない。
ワラタ
後に例外処理 try 〜 chatch に衣替えして支持を得る、元祖例外処理サポート関数のデビュー作なのに、
誰も正しい使い方を広められず、gotoと併せて鵜呑み受け売りで語り継がれて忌み嫌われたんだよね。

464 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:39:18 ]
longjumpが悪だとは決して思わないけれど
忌み嫌われる程度には危険で使いにくいと思う

465 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:41:11 ]
海の怖さを知って初めて一人前の猟師
そういうことさ

466 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:44:09 ]
コードの海は俺の海

467 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:51:00 ]
そして怖い膿を知った



468 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:57:00 ]
まあデストラクタが呼ばれないから実際使えなかったわな。

469 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:26:41 ]



「今は大抵○バイト」



一番ダメな考え方

こうやって決め打ちすると、そこから変わった場合に一切対処できずに泣いて誰かに助けを頼むことになる


「ママが○バイトだって言ってたから○バイトじゃなきゃダメなんだあああウワアアアアン!」









[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<118KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef