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


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

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132



1 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:10:57 ]
このスレは標準Cのみの限定スレです。
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244

他の過去ログはここに
nssearch.hp.infoseek.co.jp/clang/
前スレ
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
pc11.2ch.net/test/read.cgi/tech/1170338926/


GUIなどの標準Cではできない事の質問、ソース丸投げ、宿題、書籍 は
専門の別スレッド↓があるのでそこへさようなら。

【初心者歓迎】C/C++室 Ver.42【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1188748806/
C/C++の宿題を片付けます 95代目
pc11.2ch.net/test/read.cgi/tech/1187944110/


【このスレ住人としての心得】
ビットシフトはなんの役に立つのでしょうか でググれ

511 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:03:25 ]
途中送信しちった

/* map.c */
struct {
  ID *id;
  char *name;
} MAP;
static struct MAP map[]={
  {&ID_HOGE,"hoge"},
  ...
};
ID map_ID(int n)
{
  return *map[n].ID;
}
const chat * map_name(int n)
{
  return map[n].name;
}

これでいいんじゃ?

512 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:10:51 ]
>505
もうちょい正確にやりたいことを書かないと無理だと思うんだな。
何がしたいか正確には分からないけど多分 LCS とは別物だと思う。

>重複はない
座標系1の点 { (x10, y10), ... , (x19,y19) }
座標系2の点 { (x20, y20), ... , (x29,y29) }
で、どう重複がないのよ?i ≠ j なら x1i ≠ x1j って言ってるの?

>要素間の位置関係が等しくなっている全ての要素ののなかで一番要素数が多いもの
座標系1 に対して並行および回転移動を行った際、座標系1の点と座標系2の点とが一致する数が最大となる移動時での
一致する点の組みを選び出せばいいの?

513 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:47:56 ]
スレの趣旨から外れた質問は流せって

514 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:41:50 ]
プリプロセッサってたいがい
#define hoge
って書いてあるけど、インデントやスペースを挟んだ
  # define hoge
みたいな書き方も規格的にOKですか?


515 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:42:09 ]
うん

516 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 23:16:53 ]
字下げするときはそうすることが多いよNE

517 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 23:54:57 ]
ありがとうございます。
自信を持ってインデントします。

518 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 01:45:27 ]
>>511
ポインタのポインタをコンパイラ制限のために、さらにポインタに
するなど受け入れがたいため却下。

IDの比較はどうする?ポインタのポインタのポインタだから、
値を比較するには、ポインタのポインタn・・・とか、
ポインタのポインタが静的に定義されているから、
ポインタのポインタのアドレスで比較すればいいとか、
コピーするにはうんぬんとか。

ヤッテラレッカボケ!

519 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 01:52:34 ]
可能なら、動的初期化できるC++としてコンパイルすればほぼ498のコードで通る。
これだけのためにそうするのは少々無駄遣いという気もするけど。



520 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 03:07:50 ]
>518
IDはポインタだからID *はポインタのポインタどまりだろうが
お前はまず教科書読み直せ

521 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 03:11:31 ]
>>520
アゲアシとってナニが楽しいのかね。そうやって
見下すことでオノレの存在価値を認識する作業を繰り返す
人生なんてオワリにしたほうがいいよ。

522 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 03:18:59 ]
>>521
こんなところで見下されてる人生なんてオワリにした方がいいよ

523 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 03:36:44 ]
このあいだ関数プロトタイプ使いたくないとぬかしてたボケと同じ臭いがする

524 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 10:12:37 ]
>>518
その程度で受け入れ難いなら、まず「C言語を使う」という選択肢を捨てるべき。
C言語しか使えないならC言語の制限は受け入れるしか無いだろ。jk

525 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 10:34:24 ]
>>524
同意。言語の制限が枷になるなら言語選択からやり直すべき。

526 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 11:21:12 ]
Dおすすめだにょ!

527 名前:デフォルトの名無しさん [2007/12/07(金) 12:25:18 ]
整数型のオーバーフローについて質問です。符合無し型ではラップすると規定されていて、
符号付き型では未定義動作になると理解しました。

その場合、以下のようなコードは「ラップする」と「未定義動作」のどっちになるんでしょうか?

unsigned char c = 1;
c += INT_MAX;

期待する動作としては符号無しのルールに従ってラップした結果が c に残って
欲しいんですが、 c = c + INT_MAX の右辺の c は int (符号付き)に格上げされて
しまうので、未定義動作という解釈もできるように思います。

後者の場合、未定義動作を避けるためには明示的に
c = (unsigned int)c + INT_MAX と書く必要があることになってしまいそうですけど、
ちょっと意味不明なコードになってしまいます。

528 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 12:38:32 ]
c += (unsigned int)INT_MAX;

529 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 21:00:23 ]
c = (unsigned char)((unsigned int)c + INT_MAX)

無理して規格の解釈ギリギリのコード書く必要もあるまい。




530 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 09:39:13 ]
もしかして下線1文字 _ って予約識別子ではない?


531 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 10:45:41 ]
予約識別子は __func__ だけじゃないかな。
予約マクロにも下線二文字か下線+英字と最低二文字を想定しているっぽいし、
下線一文字は処理系で特別に解釈されるようなことはないと思う。
普通に変数名としても使えるし。

532 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 11:51:47 ]
下線1文字 _ は
・二重下線を含む
・下線 _ で始まり英数文が続く
どちらのルールにも当てはまらない。
だから「予約識別子ではない」だろうね。

>予約識別子は __func__ だけじゃないかな。
>
>下線一文字は処理系で特別に解釈されるようなことはないと思う。
>普通に変数名としても使えるし。
たとえ予約識別子だろうと "普通に変数名として使える" よ。
"処理系で特別に解釈される" のではなく "処理系が既に使っている可能性がある" 名前。

533 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:06:58 ]
何を以って普通と言うかはわからないが、未定義の動作が伴うことは"普通に変数名として使える"と言えるのか?
処理系が予約している識別子を他の予約されていない識別子と同様に扱えたとして
処理系依存としか言えない。

534 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:52:31 ]
C99しか見て無いけど。

>>530
ファイルスコープは予約されてるっぽい。

>>531
マクロ名も識別子らしい。

自分から進んで規格見ないから勉強になるわぁ。

C89はシラネ。
どっかで見れないかね?
お取り寄せメンドイ。

535 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:17:21 ]
>>530
_ はC89の頃から大域名前空間では予約済み。

>処理系が予約している識別子を他の予約されていない識別子と同様に扱えたとして
というか、処理系は予約識別子も予約されていない識別子も同様に扱う。
名前の上書きが問題になるのは識別子が予約されているかどうかとは別の問題。
例えば

char hoge[]="hoge";
…………
hoge[10] = '\0';

ってコードは言うまでもなく未定義で正しくないコードだが、
それでも "普通に書ける" コードではあろう。


536 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:19:43 ]
"普通"の定義によるんじゃない?
コンパイルが通るだけで普通なのかってことになるだろ

537 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:37:38 ]
そこはコンパイラの説明書を読めとしか。

538 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:50:48 ]
イマサラだけど「普通」って文化の問題だから、
規格と比べて云々しても答え出ないっしょ。

肯定も否定もでけまへん。

539 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 15:36:42 ]
根本的に間違ってる。
コンパイルできるかどうかも処理系依存だということを忘れてる。

よって処理系に依存しない書き方が普通。



540 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 16:06:01 ]
C89のコードが普通のところもあれば
C99のコードが普通のところもあれば
gcc依存のコードが普通なところもあれば

言えばキリが無いよ。
何が普通かなんて、語るだけナンセンス。

541 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 16:30:37 ]
このスレでは普通についての議論はしません

542 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 16:33:40 ]
予約識別子を予約されていない識別子と同様に扱うことが普通かどうかって話だろ?
とりあえず避けるわな、普通。

543 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 16:59:17 ]
・赤信号だろうが普通に渡ることはできる。だが普通は渡らない。
・予約識別子は普通に変数名として使える。だが普通は使わない。

どっちも正しい。
二人とも普通の指してる先が違うんだ。
それに気づかなきゃ話が噛み合うわけがない。

544 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 17:01:06 ]
予約識別子を普通に扱うってのはコンパイラが?プログラマが?

545 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 17:41:55 ]
>>543
例え話に例え話で返すと話がズレがちなんで嫌なんだが、ちょっと言いたい。

>赤信号だろうが普通に渡ることはできる
規約違反。

精々「横断歩道の無い道を渡る」ぐらいのものだと思う。
車線無しならOK、対向1車線でもまぁ、対向2車線・・・うーん。
という感じで、程度問題ではなかろーか。

546 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 18:07:53 ]
本筋とズレたところで例え話の粗探ししてどうすんの。
そういう話じゃねえべ。

547 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 18:25:32 ]
細かい所に拘りたいのも本質さえ掴めれば良しとするのも人それぞれ。
何が普通かと同じで結論は出ません。

548 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 18:33:52 ]
コンパイルできるのは処理系依存だってことはみんな理解して発言してるんだよな?

549 名前:543 mailto:sage [2007/12/08(土) 21:47:05 ]
予約識別子は constraint ではないのでCのコードとしては "普通" に使える識別子である。 <= 文法上の問題
ただし、そのようなコードをコンパイルする場合については undefined である。 <= 意味上の問題
だから、そういう書き方は "普通" はしない。 <= 道徳上の問題

「使えない」のか「使ってはいけない」のか「使わない」のかでは全く意味が違う。
だから話が噛み合っていない。



550 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:51:40 ]
道徳というより実作業上の問題じゃね?

551 名前:543 mailto:sage [2007/12/08(土) 21:55:55 ]
>道徳というより実作業上の問題じゃね?
ん、そっちの方が適当だね。


552 名前:543 mailto:sage [2007/12/08(土) 22:09:08 ]
あと「誰が」普通に扱うのかっていう主語の混乱もあるな。
俺的に分類してみた。

>>531 ?? (主語:プログラマが)
>>532 文法 (主語:処理系が)
>>533 意味 (主語:???)
>>535 文法 (主語:処理系が)
>>539 意味+作業 (主語:プログラマが)
>>540 文化 (主語:プログラマが)
>>542 作業 (主語:プログラマが)
>>548 意味 (主語:???)


553 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 22:42:44 ]
>>549
話が噛み合ってないとか以前に、自分の発言の意味を自分自身理解してるのか?
傍目にはお前が一番混乱してるぞ。 電波撒き散らすな。

554 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 03:07:37 ]
>>553>>549の何が気に入らないんだ?
真っ当な指摘だと思うがね。

555 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 11:12:45 ]
さあこんなことを言われてしまった>>553は何がどうどういった根拠で
>>549が混乱しているのか詳しく説明するか、逃げるかふたつにひとつになってしまいました

556 名前:デフォルトの名無しさん [2007/12/17(月) 04:56:43 ]
なんで、mallocは1引数関数なのにcallocは2引数なんでしょうか?


557 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 09:43:27 ]
>>556
calloc()を1引数にしたら存在意義がほとんどないじゃないか。


558 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:18:15 ]
ゼロクリア

559 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:23:22 ]
柳家calloc



560 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 16:12:57 ]
callocは要らない子

561 名前:デフォルトの名無しさん [2007/12/17(月) 16:42:51 ]
>>557
なんで?

562 名前:デフォルトの名無しさん [2007/12/18(火) 03:45:39 ]
mallocで確保したメモリを、100x200の2次元配列だとおもってa[m][n]のようにアクセスしたいので、
    int* p = (int*)malloc(100*200*sizeof(int));
...
    typedef int A[100][200];
    A* a = (A*)p;    
のようなコードを書いたのですが、これだと使うときに(*a)[0][0]のように*が必要になってしまいます。
どうにか、*を使わずにa[0][0]のように書く方法はないでしょうか。

C++はNGです。


563 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 03:56:03 ]
>>562
int (*a)[200] = (int (*)[200])malloc(sizeof(int[200]) * 100);

typedef int A[200];
A* a = (A*)malloc(sizeof(A) * 100);

564 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 08:57:51 ]
int (*a)[200] = malloc(sizeof(int[200]) * 100);
これでいい

565 名前:デフォルトの名無しさん [2007/12/19(水) 23:21:25 ]
VC++のstrstr系関数って、KMP法とかBM法で実装されてるんでしょうか?
それと、もし自分で実装するとしたらですが、KMPとBMのどちらが評判よいですか?

566 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:35:28 ]
お帰りください

567 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:44:40 ]
たぶんそんなのは使っていないと思う。
あまりにも短い文字列などだとかえって時間かかるから。

568 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 02:59:48 ]
絶対使ってない、と言い切れるね。

1回しか使わない探索にテーブルのセットアップとかが無駄と言うのもあるけど
そもそも、そういうスキップする(全文字走査しない)アルゴリズムは
テキストの長さがあらかじめ判ってないと使えない。
そして、(strstrに渡す)文字列の長さをstrlenで調べてからBM法を使うくらいなら
長さを求める'\0'探しのついでに力任せ探索をするほうがずっとまし。
たとえ同じ文字列を何回も探索するような、初期化が必要ないケースでも。

569 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:21:03 ]
ビット操作の練習をしています。符号あり2の補数表現の整数の符号を反転するコードは、
x=(~x)+1;とx=~(x-1);のどちらが適切でしょうか?



570 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 01:38:53 ]
x=-x;

571 名前:何を以って適切とするかが提示されていないから答えようがない罠 mailto:sage [2007/12/21(金) 01:39:24 ]
>>569
x *= -1;

572 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 04:13:19 ]
このスレ的には2の補数表現を仮定してる時点で間違い

573 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 09:58:35 ]
>>572 は誰に言ってるのか

574 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 10:09:03 ]
>>573
>>570-571ではなかろうか

575 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 10:12:04 ]
俺は>>569だと思った

576 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 11:02:23 ]
>>569
xがunsignedならどっちも同じになるから、どっちでもいいよ。

577 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 11:52:01 ]
>>576 符号ありと書いてあるが。

578 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 11:56:24 ]
んー微妙だなw

579 名前:デフォルトの名無しさん [2007/12/21(金) 13:00:08 ]
構造体の定義で、たまに
struct X {
 ...
 char tag[1];
}
とか書いてあるものがありますが([0]の場合もあり)、これは何でしょうか?




580 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:08:33 ]
>>579
www.kouno.jp/home/c_faq/c2.html#6

581 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:11:49 ]
C FAQ 次スレからテンプレに入れよう

582 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:13:08 ]
>>581
>>1にあるだろ。テンプレ嫁

583 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:15:32 ]
あ、見落とした m(__

しかし、それが何であるかの説明にはなってないなw
しかしこのスレではスレ違いなので、
スレ立てるまでもない質問のほうに答えは書いておく。

584 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:57:03 ]
どうせ規格の話になるんだし、ここで答えてもよかっただろうに。
分散して見づらくなる。

585 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:23:06 ]
心得の意味がわかってないやつがいるなぁ
「わざとスレ違いな質問をする荒らしがいるのでそういうのは無視するか軽く流してください」
次からこう書かなきゃダメか?

586 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:34:52 ]
何でスレ違いなのか、さっぱりわからない

587 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:42:27 ]
>586
どの質問についての話なのかさっぱりわからない
>579についてのことなら、プログラム技法の質問であって規格の質問ではないからだ

588 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:43:51 ]
え、いつからこのスレは規格オンリーなスレになったんだ?

589 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:43:54 ]
何でしょうかって聞かれたらそれは
要素数が1のcharの配列です
としか答えられんよな



590 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:44:56 ]
>>587
規格に準拠したC言語に関するスレであって、規格のスレではなかったはずだが。

591 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:45:53 ]
だから>>579に対する答えは>>589で終わりだ

592 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:46:23 ]
>>2

593 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:47:40 ]
>>587みたいなキチガイが湧くから>>2の注意書きがあるってのに…

594 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:49:45 ]
なんなの、この自治厨

595 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:51:46 ]
なぜ「だから」なのか、さっぱりわからない

596 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:03:45 ]
ざっとこのスレ見直したけど、いかにも>>587の気に食わなさそうな話題がたくさん見逃されてるよ。
何故?


597 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:05:58 ]
なんかいろいろ言われてるけど
pc11.2ch.net/test/read.cgi/tech/1196509846/552
結局なぜ、こういう使いかたをするのかわからない


598 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:08:10 ]
>>597
向こうで聞け

599 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:17:17 ]
この書き方が文法的に正しいかも移植性が高いのかもともにはっきりしない。ただし、かなり幅広く使われている。この技法による実装は以下のようになる。

#include <stdlib.h>
#include <stdio.h>

struct name *makename(char *newname)
{
  struct name *ret
    =malloc(sizeof(struct name)-1 + strlen(newname)+1);
      /* -1 は頭の [1] 用; +1 は \0 用 */
  if(ret!=NULL){
    ret->namelen = strlen(newname);
    strcpy(ret->namestr, newname);
  }

  return ret;
}

上の関数は、name 構造体の実体を、引数で要求された名前を保持できるように(構造体の定義から想像する1文字ではなく)大きさを調整して割り付ける。
幅広く使われているけれど、この技はいささか悪名高い。……

以上、CFAQ初版より抜粋



600 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:48:26 ]
なんで、
struct name {
 int namelen;
 char *namestr;
};
にしないんだろう?二回malloc/freeするのがイヤってことなのかな。

601 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:58:54 ]
ファイルの入出力も1回で済んだしな

602 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:05:11 ]
>>600
そのまま通信用バッファとかに使えるから、流行ってたんだと思う。

603 名前:デフォルトの名無しさん [2007/12/21(金) 17:21:32 ]

CG法のプログラムを完成させ、以下のA,bに対する解xを求めよ。
A:

-6.761582e-01 8.649824e-01 5.974179e-01 1.510212e-01 9.412452e-01
8.649824e-01 -9.466491e-01 9.172758e-02 9.491567e-02 3.673389e-01
5.974179e-01 9.172758e-02 8.015639e-01 -7.419281e-01 2.099383e-03
1.510212e-01 9.491567e-02 -7.419281e-01 -2.940182e-01 -6.722990e-01
9.412452e-01 3.673389e-01 2.099383e-03 -6.722990e-01 -8.416333e-01

b:

8.156371e+00
1.463224e+00
2.283493e-01
-6.422500e+00
-5.215142e+00

これってどうやったらできるんですかね?(>。<)
cg法自体よくわかってないんですが…

604 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:22:17 ]
これこそ、正にスレ違いだな。

605 名前:デフォルトの名無しさん [2007/12/21(金) 17:26:04 ]
連立方程式の開放の一つだろ

606 名前:デフォルトの名無しさん [2007/12/21(金) 17:35:03 ]
ja.wikipedia.org/wiki/%E5%85%B1%E5%BD%B9%E5%8B%BE%E9%85%8D%E6%B3%95

607 名前:デフォルトの名無しさん [2007/12/21(金) 17:38:06 ]
Lesson6 連立方程式-大規模疎行列-(不完全Colesky分解)

Lesson7 連立方程式-大規模疎行列(前処理つきICG法)

www.saitama-u.ac.jp/hiyama/suchi2.htm

608 名前:597 mailto:sage [2007/12/21(金) 17:44:58 ]
>>599
なるほどーよくわかりました。
やっぱり、>>600のように書いたほうがいいですね。

609 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:45:59 ]
共益勾配法のことか。
なつかしー。BCG法とかもやらされたなあ・・・



610 名前:デフォルトの名無しさん [2007/12/21(金) 19:49:22 ]
処理系依存の話ではなくANSI Cとしての話ですが、

シフト演算で、シフト量が0の場合の挙動は定義されているのかな?
それとも未定義?

int x;

x>>= 0:

x<<=0;

とかした場合


611 名前:デフォルトの名無しさん [2007/12/21(金) 19:53:12 ]
変化無し

612 名前:610 mailto:sage [2007/12/21(金) 20:16:42 ]
>>611
どもです。

ANSI C ( JISX3010)
www.jisc.go.jp/

をぱらぱら読んでみましたが、

 6.5.7 ビット単位のシフト演算子

を読む限り、負数の場合は未定義とはありますが、0に関しては
特に述べられてませんね。

どの処理系でも

(x >>= 0) == x

(x <<= 0) == x

と想定してFA?

613 名前:デフォルトの名無しさん [2007/12/21(金) 20:22:21 ]
c<<(m-n)
という式ではm-n=0という場合もある

614 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:50:39 ]
>612
x >= 0 ならね。厳密に解釈するなら x < 0 なら << は未定義、>> は処理系定義。

615 名前:610 mailto:sage [2007/12/23(日) 23:40:58 ]
>>614
どうもです。でしたらunsigned int なら大丈夫ですね。


616 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:54:53 ]
>>599あたりの話なんですが、
なぜこの技法はだめなんですか?
特に問題なさそうに思えるんですが

617 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:59:05 ]
C89の規格に「やってもよい」と明記はされてないから。C99なら問題ない。

618 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:03:12 ]
規格を厳密に解釈すると、駄目ということになるから。
www.kouno.jp/home/c_faq/c2.html#6

619 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 00:14:46 ]
Windowsもbitmap周りでやってたな



620 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:56:51 ]
C99 ならサイズ無しで書いとけば可変長メンバが使えるようになったね。

621 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:19:28 ]
>>617
ahosugi

622 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:21:23 ]
>>620
なんで何度も出てることを新しい情報のように紹介してくれるの?

623 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:32:47 ]
安部さんが首相を辞任したね

624 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:47:43 ]
中日ドラゴンズが日本一になったね

625 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:53:53 ]
C99対応のコンパイラってGCCぐらいかな?


626 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:55:47 ]
GCCがC99に対応したね

627 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:56:34 ]
そう。でもGCCでも完璧に対応してるわけじゃないけどね。
ttp://gcc.gnu.org/c99status.html

628 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:09:16 ]
DMCをお忘れではありませんか。
こっちも完璧ではないけどね。

629 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:12:56 ]
VCも少しは見習え



630 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:48:35 ]
数年前のC99をいまだ対応させないコンパイラって・・・
昔との互換性?それとも技術的に改良部分が多いのか?難しいのか?
よくわからないけど

631 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:50:12 ]
そりゃC99に対応させても努力が多いわりに実入りが少ないなら
当然じゃない?ビジネス的にはC++かC#を使ってってこと。

632 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 13:02:19 ]
iccはc99だし、SunWorksのccもc99だけどね。

633 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 13:20:11 ]
>>629
620は、少なくともVC++ 7.1以上なら独自拡張扱いで使える。
msdn2.microsoft.com/en-us/library/34h23df8(VS.71).aspx

634 名前:デフォルトの名無しさん [2007/12/24(月) 21:17:49 ]
fread関数でサーバーにあるファイル(ファイルサイズ1G)を読む際、
読込みサイズを32*1024*1024にするとエラーがおきなくて、
読込みサイズをファイルサイズにするとエラーが起きるのはどうしてでしょうか

どなたかご教授下さいm(_願_)m

635 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:21:44 ]
そんなに大量のメモリをいっぺんに確保できていないのだろう。

636 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:23:47 ]
エラーってなんだよ

637 名前:デフォルトの名無しさん [2007/12/24(月) 22:07:40 ]
634です。

スレ違いでした。失礼しました。

638 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:36:13 ]
規格の話以外はスレ違いだと騒ぐのに、コンパイラの話になると嬉々として話題に加わる

639 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:49:57 ]
>>638
なんでそう必死なんだ。



640 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:52:13 ]
コンパイラの規格準拠度なんて、まさにこのスレの守備範囲だろ。

641 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 21:23:25 ]
実装に特化したスレってあったっけ?

642 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 21:23:58 ]
↑「実装すること」に特化した

643 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 21:27:32 ]
「コンパイラ・スクリプトエンジン」相談室12
pc11.2ch.net/test/read.cgi/tech/1188688416/

とかか?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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