★ ANSI Cでいこうよ ★
■ このスレッドは過去ログ倉庫に格納されています
0001標準なおんなのこ
NGNG_/ ヽ _
/ , , ヽ ヽX 7ヽ、
i' / // / / | ヽヾ. 、 ヽ ヽX X ゝ
/| | | | |_⊥」| || | |.|」⊥_ | iミミ、X /
V| | || i|_⊥、W./ヽ|,|⊥_||ヽ|≡= x/
ヽNヽ| ,|し.j _|し.jl|` |T Τ7 / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |.{  ̄ .'_,  ̄ || | | ||+ヽ < あははー、ANSI Cでプログラムしませんか?
| | i\ .1 | | | || +| \_______
| | | i : エ エ :´ : | | | | ||++|
| _ | | |´  ̄只 ̄ ヽ| | |_| ||++|
/ || | ノ || ヾ | | | ヽ| |++|
| || |- ´ i | | i `ー| | | | ||++|
| | | | | .| | | | | | || ̄
標準規格限定です。
標準ライブラリ、STLなどなど
MFC,VCLなどは禁止です
010296
NGNG現実的な制約でないというと、ほとんどの環境では負値に2の補数を使う
からということかな?
その場合でも、-(-32767-1)は-32768になってしまって正しい動作が期待
できないから、やはりそんな値を使うこと自体が間違っている。論理演算
なら問題ないだろうけど、その場合には16ビットの範囲を守ることはたや
すいからね。
もし、-2147483648〜+2147483647が一般的な範囲だと思っているなら、
それはとんでもない間違いだよ。
0103デフォルトの名無しさん
NGNG昔の16bit時代からやってる人なら、ちょっと大きな数がでてきそうな
ときには int ではなく long と書くのが普通。
でも最近の人はわかんないよ。int = long あたりまえと思ってる人が
多い。あと long = 32bit と仮定してるクソコードもたくさんあって、
Linux-AXP なんかで困る。
0104デフォルトの名無しさん
NGNGunsigned long 使う風習があるんだけど
これってどう思う?
アドレス幅といっしょなのって、大抵intの方じゃない?
勘違いならごめんよ
0105デフォルトの名無しさん
NGNG2の補数とワードのビット数をそろえるように設定するのは必須ですな。
完全 ISO-C じゃ非常に冗長なコードになるから
1の補数とかの環境は初めから捨てました。あとライブラリ関数が
かなり使えないのが苦しい。汎用性のある ISO-C のコードって
printf("hello"); くらいじゃないかな。(藁
まー、あまり期待はしてないけど K&R 時代よりは多少マシって
具合ですな。基本構造式まで処理系依存では逝ってしまいますので…。(藁
0106105
NGNGこれが適切に決まっていればもっと良いコードが書けるんだけど
これも1の補数と2の補数の両方の存在を見とめているためだ…。
ちとむかつく。(藁
0107デフォルトの名無しさん
NGNGそもそもポインタ=数値という前提でプログラムすること自体が規格外
0108デフォルトの名無しさん
NGNGそんなことないよ。intptr_tを使えばいいだけのこと。
0109デフォルトの名無しさん
NGNGLinux, Win32, BeOSなんて、比較的よく似たプラットフォームだからそんな
ことを言っていられるんだと思うよ。
8ビット〜64ビットCPUを対象にした組み込み用の汎用ライブラリを実装する
場合には、2の補数はともかく、算術型のサイズを特定することなど不可能。
それに、汎用性のあるISO Cのコードがprintf("hello");ぐらいというのは
まったく意味不明。
型変換が処理系依存って、有符合整数と無符合整数の間の型変換のこと?
そんなのはどちらでも正の値と分かっている場合以外、型変換すること自体
が間違っているよ。そもそも両者を混在させる必要なんてそうそうないはず。
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNGfreeをしたらどうなりますか?
怖くてできません。
0115デフォルトの名無しさん
NGNGhttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/free.3.html
0116デフォルトの名無しさん
NGNGここらでSTLに挫折した、全体の95%相当のプログラマが
不買運動を起こし、消滅します。
ありがとうC言語!そしてC++さようなら!(^_^)また会えるといいね!
http://piza.2ch.net/test/read.cgi?bbs=tech&key=995820118&ls=100
0117デフォルトの名無しさん
NGNGすれ違う。
>>112 64bit環境では通常(MS以外)sizeof(int)=4 sizeof(int *)=8
0118デフォルトの名無しさん
NGNGPentium以降のデータバスって64bitじゃなかった?
>>117
ちと意味が違うのでは?
64bit環境でintが32bitなのは、intも64bitにすると必然的に
longも64bitになって、charとshortだけじゃ16bitの型あたり
を切り捨てなきゃならないからでしょ?
既に、intがCPUのワード幅であるって前提は崩れてるよ
0119デフォルトの名無しさん
NGNG先月からCやりだしたのでいまいちよく分かりません。
0120デフォルトの名無しさん
NGNGポインタのサイズはすべて一定です。。
short a;
int b = 100;
a = &b;
とかすれば問題だが...
0121デフォルトの名無しさん
NGNGANSI Cってポインタのサイズは同一であるとみとめてたっけ・・・。
コード領域を指すためのポインタとデータを指すためのポインタのサイズが違うことは多々ある
0122120
NGNGそーだったんですか。はずかシー。
0124デフォルトの名無しさん
NGNGでないとコンパクトモデルやミディアムモデルのMS-DOSの処理系が
規格準拠になりえないだろ
0125デフォルトの名無しさん
NGNG全てのポインタは同じ幅(=16bit)と考えていいのでは?
(みであむは知らない)
■ このスレッドは過去ログ倉庫に格納されています