C言語なら俺俺に聞け! Part 73

このエントリーをはてなブックマークに追加
854778:04/03/01 01:16
あー、本、欲しいな。
いろいろ情報ありがとうございます。
>>853
検定試験を2倍以上簡単にしたんじゃないか?
856デフォルトの名無しさん:04/03/01 01:22
> 大抵は
> クイックソート使ってるんでしょうね。

初期のLattice-Cはちがいましたよ。

さすがはレタス
858デフォルトの名無しさん:04/03/01 01:24
>>855
っていうか、例の専門学校だろ?
だったら、著者本人が講義したんだろうから、
それが前年度(たぶん著者じゃない人が教えたんだろう)とくらべるのは、
かなり不公平じゃないかと思うが。

やはり本人がおしえたほうがかなり有利。
859778:04/03/01 01:35
他スレで叩かれてる・・・・。
  ∧__,,∧         
 (´・ω・`)       
 (つ旦と)    しょぼーん。
 と_)_)
>>819
こういうところで ANSI とか言ってる>>826のような連中に
main の戻り void なのを批判する資格は大抵ないよ

なんせ、ANSI の規格票を持たずに「ANSI 規格で決まってる」なんて
いい加減なことをほざいてるシッタカばっかりだから
8611002:04/03/01 01:36
www.catnet.ne.jpが落ちている・・・・。
  ∧__,,∧         
 (´・ω・`)       
 (つ旦と)    しょぼーん。
 と_)_)
862デフォルトの名無しさん:04/03/01 01:36
どこだろー
>>860
持っているよ。日本語訳だけど、以前のも今のも。
>>853
マルチ氏ね
>>862
>>1
C FAQ 日本語訳
>>863
はいはい
867デフォルトの名無しさん:04/03/01 01:42
>>860
> こういうところで ANSI とか言ってる>>826のような連中に
> main の戻り void なのを批判する資格は大抵ないよ

別の人間でしょ。どうみても。
868デフォルトの名無しさん:04/03/01 01:43
>>860
いまどき「ANSI」なんていってる860がどうみてもしったか。
>>868
826が言ってるんだよヴォケ
失礼!

s/826/827/g

すまん、これは俺が悪かった
871デフォルトの名無しさん:04/03/01 01:48
っていうか827はだれがどうみても、そのままスルーするものだろ。

わざわざそんなのにかみつくやつってのは、「お、これならおれでもわかる! おれよりへぼい
やつがいた!」とうれしそーに、さわいでる馬鹿だろうに。
ワロタヨ
オモシロェ
!
>>872
突撃厨うざい。静かにヲチっていろ。
盛ってるなあ
ワロタ
3桁の数字も区別ができないアフォがいるスレはここでつか?
876デフォルトの名無しさん:04/03/01 04:06
お聞きしたいのですが,
x[100]というように配列を使った場合と
x1,x2,…,x100というように一つづつ変数を定義した場合とでは
どちらも,その変数を呼び出したり,計算したりするのにかかる時間は
同じなのでしょうか?また,それをx[10][10]というように
2次元配列にした場合も同じなのでしょうか?
気になるならアセンブラ出力を見て比較しな
878デフォルトの名無しさん:04/03/01 05:04
うーん。アセンブリ言語は全然知らないです。
構造体を使った方が速いのでしょうか?
>>876 >>878
実装依存だと思う。
どうしても知りたいなら、実際に動かして試せ。
最適化を無視すると、一般に、
1.変数のアドレスを得る
2.配列インデックスを1に加える
3.必要なら2を繰り返す
となるから、1だけで済むx0,x1のほうが早い。
でも最近のコンパイラは賢いしCPUも早いから、
読みやすいほうを使ったのでいいと思う。
おいおい、配列の添え字に変数を使わない限り(>876の使い方は違う)
配列の何番目の要素であろうと、アドレスはコンパイル時に決定されるよ。
どんなタコなコンパイラであろうと。
差が付くとしたら、自動的なレジスタ変数割付とかその程度。
だから実装依存だし、アセンブラ出力を見ろと書いた。
882デフォルトの名無しさん:04/03/01 05:34
>> 880
配列のほうがいらない作業をしていることになるんですね。
ありがとうございます。
いやすまんぬ。俺はインデックスは変数のつもりで書いた。
ま、揉めるつもりはないんで許しておくれ。
884デフォルトの名無しさん:04/03/01 05:59
>> 881
ちなみに、プログラムでは一次元配列の添え字に変数を使っています。
その添え字の部分の変数として、2次元配列を使っているのですが、
そこを普通の変数で置き換えてから一次元配列の添え字としたほうが
いいかどうか迷いました。
その2次元配列の要素をしばらく使いつづけるので、もしかしたら
置き換えてしまったほうが速いかな、と思った次第です。
どうもありがとうございます。
x1,x2...では添え字が使えないからな。
実行時間のナノ秒単位の節約だけでなく
メンテナンス時間の節約も含めて判断すべき。
886デフォルトの名無しさん:04/03/01 06:08
ちょっと分かりにくいので分かりやすく書いておくと
a[b[i][j]]のb[i][j]をcとかで置き換えたほうがいいかなー、
という疑問でした。もう少しいうと、このb[i][j]のままで
x[b[i][j]]とかy[b[i][j]]とかいうように多用しているので、
cなどに置き換えたほうが速いのかどうかが疑問でした。
使う状況によるということですね?
わかりました、どうもありがとうございます。
添え字自体を配列から読み出しているのだったら、
一時変数に代入して使った方が速い「かもしれない」。
2次元配列を使わずに1次元にすることが可能なら(==高次の添え字を毎回計算しなくて済むなら)
1次元にした方が速い「かもしれない」。

低次の配列(or構造体)部のサイズが2のべき乗でないなら
2のべき乗にした方が、もしかしたら「極僅かに」速くなる「かもしれない」。
またはポインタで参照した方が速くなる「かもしれない」。
でも逆に遅くなる「かもしれない」。
よほどクリティカルな部分でない限り、速度を気にするべきじゃない。

ただ、a[b[i][j]]なんてするくらいだったら
読みやすさからも別な変数を使うべき。
889デフォルトの名無しさん:04/03/01 06:24
あまり素人が、細かく速度をとやかく気にしないほうがいいという感じですかね?
確かに全然素人なのでもう少しいろいろと他のことに力を使おうと思います。
本当にいろいろな意見ありがとうございます。
890デフォルトの名無しさん:04/03/01 07:39
> おいおい、配列の添え字に変数を使わない限り(>876の使い方は違う)
> 配列の何番目の要素であろうと、アドレスはコンパイル時に決定されるよ。

っていうか、添字が定数だけだったら、配列使ういみねーだろ ぼけ
891デフォルトの名無しさん:04/03/01 07:41
> a[b[i][j]]のb[i][j]をcとかで置き換えたほうがいいかなー、

それは「置き換える」んじゃなくって、一旦代入した臨時変数を使うかどうかってことでしょ。
それはむしろ「しないほうがいいい」ですね。(速度の点でいうなら)
むしろするかしないかは、「どっちが読みやすいか」だけできめるべし
>>890
そんなことないだろ。
というか添え字云々は本筋じゃなくて、
対象のデータ構造(ベクトルや行列は典型)に応じて使うべきだと思うが。
データが一体だということを明示的に主張できるし
関数間の受け渡しの効率化の意味もある。
893デフォルトの名無しさん:04/03/01 08:17
> というか添え字云々は本筋じゃなくて、
> 対象のデータ構造(ベクトルや行列は典型)に応じて使うべきだと思うが。

そうではなくて、倫理的なデータ構造が「配列」とするのが最も適しているってことは
そのロジックでは必然的に添字は変数になるだろってことだ。そんなこともわからんのか
ちっとは頭を使え!
894デフォルトの名無しさん:04/03/01 08:18
こんなのはちょっとした入門書で勉強しただけでも身に付くことなのになあ。
はあ、ここレベル低すぎ...!
書き込みせずに放置できないお前も同レベル。
倫理的なデータ構造
倫理的なデータ構造
倫理的なデータ構造
落ち着け。
倫理的はおそらく論理的の間違いだと思うが、
変数を使って処理するのが適しているからって
変数しか使わないということにはならないだろ。
まさか定数で添え字を指定した経験がまったくないのか?
898デフォルトの名無しさん:04/03/01 08:25
> 変数を使って処理するのが適しているからって
> 変数しか使わないということにはならないだろ。

いまさらごまかしても無駄。

「添字に定数しかつかわないようなもの」
と「変数を主に使うもの」の話だろうに。
899デフォルトの名無しさん:04/03/01 08:27
>>897
まあa[0]だけは添字が定数なことは多いだろうなあ。
だが、0〜MAX-1まであるような環境で、「5」だけを定数で指定するような
コードがあったら、それは「配列というデータ構造」を使っているのではない
可能性も高い。(配列というデータ構造を「流用」してるだけで)
たとえば文字列テーブルの参照用なんかは定数使わない?
それともこれも「流用」になるのか?
確かに、定数自体をenumで指定して・・・
なんてのもありがちだね。
>>832
INT_MINは、負の値なんですよね。
たいてい-INT_MAX-1の値が定義されていると思います
たぶん…

しかしDBL_とFLT_は正の値(絶対値?)しかなく、
負の値に対しての説明もないANSIの本(ANSI FAQ)みたけど…

-FLT_MAXで一応実装はしたけど、本当にこれでよいのかと。
stdinやstdoutも配列+定数でdefineされている処理系が多かったり