「intとポインタは同じサイズが前提」派が集うスレ
1 :
integer=pointer:
「intとポインタが同じサイズである限り、
俺のプログラムはどこでも動く様に作られている。 」
───デフォルトの名無しさん
この慣習は古くはC言語のK&R時代から暗黙の了解として
黄金時代の達人プログラマの間で広く慣れ親しんできた事である。
事情を良く理解したプログラマならば、この伝統は是が非でも
守るべきものであると感じるだろう。
しかし、伝統が崩れさるかもしれない危機が迫っているのだ。
2 :
仕様書無しさん:03/12/14 02:01
C厨って馬鹿だなぁ。げらげら
3 :
仕様書無しさん:03/12/14 02:02
farとかnearとかわからない厨房は、PGやめろ。
4 :
integer=pointer:03/12/14 02:05
振り返ればプロセッサの歩みはC言語と共にあったと言える。
ところが、最近はポインタだけ64bitだとか、全く見当外れな
設計をする輩が蔓延り始めた様だ。いったい何を考えているのか
理解に苦しむ。前提を崩すという行為、これは我々から見れば
プロセッサメーカーの裏切り、反逆に相当する。
この暴挙を許してしまえば、もはやプログラマに明日はない。
特にあなたが職業プログラマなら深刻な問題と捉えるべきである。
コードを無駄に複雑化、しかし見積もり請求額の上限はさほど
変わらずに、プログラマは負担の割に低賃金を強いられるという
悪循環をもたらす事は目に見えている。今までがそうだった様に。
そろそろ粛清が必要だと感じた同志は多かろう。
ああ、そうですかと、ただ流されてはいけないのだ。
我々自身の明日のために、今こそ立ちあがるべき時が来たのだ。
5 :
仕様書無しさん:03/12/14 02:08
キャストすれば?
ポインタって何ですか?
「何ぃ、ポインタが24ビットぉ?
そんなもん、コンピュータじゃないぜ(w 」
以前 UNIX 環境に安住していた自称 wizeard 達が発する
この言葉に怨嵯の念を感じていた奴らも多いだろう。
今だからこそ俺は言える。
「何ぃ、intとポインタが同じサイズである事に依存したコードぉ?
そんなもん、プログラムじゃないぜ(w 」
8 :
仕様書無しさん:03/12/14 02:14
昔は、64kで十分だったからなぁ。
あ、スペルミスった(汗
10 :
integer=pointer:03/12/14 02:15
>>5 キャストしてもintを使う前提であれば、
情報の欠落は避けられないのはおわかりか?
(pointer>intの場合)
むしろ、最近は「ポインタとして」扱う事が少なくなってるね
だけどポインタとintが同じサイズじゃないとできない事って何があるの?
13 :
仕様書無しさん:03/12/14 02:21
>>11 たぶん問題にしてるのは、プログラマがその事を考慮して
コードを書かなきゃならんということでは。
できる・できないの話じゃなく。
14 :
仕様書無しさん:03/12/14 02:21
上位と下位にわけてキャストするに決まってる。
合成するときは4bitずらすのだ。
15 :
仕様書無しさん:03/12/14 02:22
まあnearポインタまでサイズ違ってたら嫌ですな
>>13 すまん、説明が下手だった
つまり言いたいことは、
intとポインタのサイズが同じ事でたとえばどういう風につかうの?
使い道は?って事
17 :
仕様書無しさん:03/12/14 02:23
>>11 ライブラリから提供されてる構造体のint型フィールドにポインタを格納すること。
>>16 intだけでコードが書ける。
int p = *(int*)p;
なぜ態々int型に格納するの?
int型のポインタでいいんじゃね?
20 :
仕様書無しさん:03/12/14 02:26
int型の2次元配列作ってハッシュにするとか?
#define INT long
#define INT int
って場合によって使い分ければいいじゃん
22 :
仕様書無しさん:03/12/14 02:28
>>19 int型とintのポイント型が同じサイズという前提ではね。
intはもともとCPUで自然に表現できる大きさ=レジスタサイズ
から来てるんだよね。
32bitのCPUでは、結構長い間アドレス空間のサイズもintと同じだったと。
>>11 char *ptr;
...
printf("%X:%c\n", ptr, *ptr);
本当は "%p" とすべきところを"%X" とかにしちゃってるとか
(だと思ってるけど。。。)
25 :
仕様書無しさん:03/12/14 02:40
1の主張もわかる。
intがダメならポインタと同じサイズの型を探す必要があるな。
26 :
仕様書無しさん:03/12/14 02:44
intを64bitにすればいいじゃん
27 :
仕様書無しさん:03/12/14 02:51
16bit時代の悪夢が再度訪れるってこと?
>>27 16ビット時代の問題の本質はこう。
「ポインタの表現力(ビット数)が足りない」
これは「intとポインタは同じサイズが前提」とは無関係。
今どきintptr_t/uintptr_tも知らない香具師が居るのかよ。
プ
30 :
仕様書無しさん:03/12/14 03:09
ポインタをint型変数に代入することは無い。
ポインタを代入するのはポインタ型変数のみだ。
>>31 The Single UNIX Specification準拠の処理系ですが、何か?
33 :
仕様書無しさん:03/12/14 03:30
34 :
仕様書無しさん:03/12/14 03:36
C言語はつきつめればみんなただの数値、
どう解釈するかだけなんだよって
聞いたとき感動した。
>>34 コンピュータにまつわる全ての事柄は自然数で表現できる。
自然数ってゼロ含まないよな、たしか?
0を含む場合もあれば、含まない場合もある。
含む場合は無いよ
分野によります。
0を自然数に入れるかどうかは、最近変わったのではなく、昔からバラバラでした。それで誰も困っていないので、今もバラバラです。統一しても何も嬉しいことはないので、これからもバラバラでしょう。
日本の中学・高校の数学で0を自然数に入れないのは、日本の中学・高校でのローカルルールです。それ以上でもそれ以下でもありません。
--------------------------------------------------------------------------------
Id: #a20031017112523 (reply, thread)
Date: Fri Oct 17 11:25:23 2003
In-Reply-To: a0085.html#a20031016224741
Name: ブタネコ
ペアノは1から、ブルバキは0から、どっちでもいいんじゃ?
クロネッカーにとっての「ゼロ」とはなんだったんでしょ
「ゼロを含まない分野」に携わっている人間にとっては、「含む場合もある」だが、
それ以外の99.9%の人間は「含まない」が真実。
>>44 どこをどうよめばそのように読めるのか理解できない。
自然数って数学の用語なんですか?
そういや漏れも学生のころ指摘されたな。
「自然数」という書き方は誤解を招くことがあるので
「非負の整数」か「正の整数」と表記するようにと。
よく考えたら、ポインタを使わなければいいんじゃないだろうか?
最近のPCは昔のスパコンよりも性能が上なんだし。
52 :
仕様書無しさん:03/12/15 00:11
何言ってるの?
ポインタなかったらC言語なんて誰も使わなかったよ
>>1 時代の流れに反しているのではないでしょうか?
整数(int等)、真偽値(boolean)、サイズ型(size_t)、参照の為の型(ポインタ、参照等)…
これらを意味に従って正しく使い分けるのが
今の時代、そしてこれからのスタイルなのではないかと感じています。
まだちゃんと勉強をしているわけではありませんが
D言語ではガベコレの為にポインタに対してxorでswapする事も許されていないとか。
サイズが同じという理由だけで別の概念の物を同一視するなごやかな時代は、
もう終わってしまったのだと感じています。
つまんねぇ…
55 :
仕様書無しさん:03/12/15 00:39
あまりがちがちに縛られると高級アセンブラとしての持ち味が失われるからねぇ。
アプリレベルでわざわざC/C++を使うことも少なくなってきてるし。
pthreadで関数呼ぶとき、
int型を(void*)x
とかって平気でキャストやってる俺…
>>53 どのスレに於いても言えることだが、君のレスはつまらん。
>>57 そんな時は、
ネタにマジレスカコワルイ。
つまらん、おまえの話はつまらん
61 :
仕様書無しさん:03/12/16 00:09
で、ブルバキとペアノはどっちが正しいの?
>>61 ゼロを含んだ方が数学的には(プログラマ的にも)綺麗な体系になる。
実用的にはこっちが良いし、だからこそブルバキは自然数の公理に
ゼロを含めたんだろう。
旧い時代からの歴史を考えているならば含まない方が正しい。
なにしろ昔はゼロの概念自体が無かったんだからな。
あと、日本の学校ではこっちで教えている以上、
日本語としてはこっちの方が広く通じる。
厳密な区別が求められる場合は
>>49が正しい。
ペアノの算術の公理系ってゼロ含めて考えても問題なくない?
>>63 全く問題がない。
自然数を有限の序数(番号)と考える派は1からの人が多く、有限の基数(個数)
と考える派は0からの人が多い。ブルバキは後者。それからペアノの公理系を
集合論の中で作るときに、最初の要素として空集合を使うことが多く、基礎論
屋さん以外の集合論好きも0から。
本筋の話をすると、ポインターと同じ大きさの整数型がないと、lisp/scheme
の実装がつらい。通常はセルとして構造体をつかうけど、整数とか、特にワイ
ド文字とかは即値を使いたい。この場合、ポインターの下何桁かが0なのを利
用する。即値を左シフトして、下の桁に型を区別する値を入れておく。
>>64 そのlisp系の実装はまずくないか...???
効率を優先するとそうなるのかもしれないが、32bitの即値が
使えなくなるわけだよね。
実用上、lisp系の言語で32bitの値なんて使わないのかなぁ...
あ、もちろんbignumの存在ぐらいは知ってるよ。
使ったことはないけど。
整数で即値を使いたいのは、ベクトル(配列)の添字として。
通常30bit あれば足りる。ギガ単位の大きさのベクトルが
いるプログラムは、今のところ Lisp 系で書かないと思う。
最近問題になるのは文字の方。以前の処理系では使う文字が
ASCII とか Latin1 とかの範囲なので文字のセルを一揃い
作ることが多かった。けど、さすがにUnicode 全部を作っ
ておくのは死ぬ。Unicode でも 30bit で大体足りるので、
新しめの処理系の stklos と Gauche はこうしてるはず。
68 :
仕様書無しさん:03/12/17 22:47
盛り上がらないという事は終了でいいですか?
69 :
仕様書無しさん:03/12/17 23:32
#ifndef LP64
//時代遅れ
#endif
70 :
仕様書無しさん:03/12/17 23:33
最近職業プログラマになった俺てきには
long=ポインタタイプ
JavaからJNIでC++のDLL呼んで、
DLL内でC++のオブジェクトnewしてそのポインタをintとしてJavaの方にかえして・・・
とかやったことがある。
全部 intptr_t で宣言しとけ。C99 でなくともそうしとけ。
74 :
仕様書無しさん:03/12/22 13:23
∧_∧
( ´∀`)< いんぽ
また
DEFSEG=&hA800
の再来ですか
| |∀・)<union ボソッ
Delphiの方が事態は深刻だな…。
しばらくはILP32の殼の中に閉じこもっていても大丈夫だよね?
78 :
仕様書無しさん:03/12/24 00:58
intptr_tを「いんぽ」と呼ぶスレ
をたててもいいですか?
「勃つんだけど居ん歩」ってあり得るんかな…?
81 :
仕様書無しさん:03/12/26 00:23
82 :
仕様書無しさん:03/12/26 00:54
必要な時に絶たなかったらだめなんでは?
なぜここでインポへとスレは動くのか
───デフォルトの名無しさん
私は最近、必要もないのに勃つようになりました。
病気でしょうか? (福岡県・35才・主夫)
85 :
仕様書無しさん:03/12/28 19:07
俺なんか昔から必要も無いのに勃つぞ。
子供の頃(小2程度?)から勃起してた記憶がある。
赤ん坊でも立つもんらしいです。
やっぱ、若奥さんの乳首を舌でコロがして、
ドウテイ君なら勃起しちゃうよね。
89 :
仕様書無しさん:03/12/29 06:43
ポインタだけ64ビットだとして、
intのサイズは何ビットになるの?
>>89 お好きなように。
因みに、Unix系OSを採用しているベンダ並びにMSでは
C における int のサイズは 32bit です。
91 :
仕様書無しさん:03/12/29 11:40
もれはいつも
printf("%d, %d", sizeof(int), sizeof(void *));
とやって確認してからコーディングするので無敵。
92 :
仕様書無しさん:03/12/29 13:59
てゆーかマニュアル読んでよ、お願いだから
>>91 size_tもintと同じサイズが前提、ですか?(ry
>>91 ワロタ。ネタだよな?
>>93 ワロタ。ネタだよな?
>>94 std::cout << sizeof(int) << std::endl;
無問題
>>91 ワロタ。ネタだよな?
>>93 ワロタ。ネタだよな?
>>94 std::cout << sizeof(int) << std::endl;
無問題
>>91 ワロタ。ネタだよな?
>>93 ワロタ。ネタだよな?
>>94 std::cout << sizeof(int) << std::endl;
無問題
98 :
仕様書無しさん:03/12/30 11:08
結局sizeof(int)==sizeif(int *)派が多数を占めてるのか
99 :
windows2010:03/12/30 11:17
C言語はプログラミング用語と何が違うのですか
100Gets!
101 :
仕様書無しさん:03/12/30 12:15
102 :
仕様書無しさん:03/12/30 22:41
>>98 ワロタ。ネタだよな?
そんな移植性ゼロの思考回路のやつらが多数だなんてありえないだろ?
sizeifはネタだと思う。
>>103 ワロタ。ネタだよな?
perlの文の最後にifの条件が来るのも。
105 :
仕様書無しさん:03/12/31 17:46
アフォガイル
108 :
仕様書無しさん:03/12/31 20:58
>>107 ワロタ。ネタだよな?
わざとスレの流れ読めないふりしてるんだろう?
109 :
仕様書無しさん:04/01/02 01:16
必死だな
111 :
仕様書無しさん:04/01/11 19:58
まあ新年だし、上げておくか
112 :
仕様書無しさん:04/01/11 21:47
ageるつもりがsageちまったじゃねーかー!
>1
俺も困るう〜
116 :
仕様書無しさん:04/05/15 16:47
117 :
仕様書無しさん:04/05/15 17:06
>>1 それ超困るし。
G5でプログラム組んでる人には既にそういう問題が出てるんかい?
118 :
仕様書無しさん:04/05/15 17:15
見たら、1月のスレに今頃反応しちった。