- C++相談室 part119 [転載禁止]©2ch.net
414 :デフォルトの名無しさん[sage]:2015/09/22(火) 16:34:20.90 ID:FVa42+rI - >>412
本題とはずれてくるけど、 &a + 1 は undefined じゃないよ。 *(&a + 1) にアクセスしたり &a + 2 すると undefined になる。
|
- C++相談室 part119 [転載禁止]©2ch.net
421 :デフォルトの名無しさん[sage]:2015/09/22(火) 16:59:35.71 ID:FVa42+rI - >>417
配列じゃないオブジェクトへのポインタ演算のルールは要素数 1 の配列といっしょ。 5.7 [expr.add] p4 > For the purposes of these operators, a pointer to a nonarray object > behaves the same as a pointer to the first element of an array of length > one with the type of the object as its element type.
|
- C++相談室 part119 [転載禁止]©2ch.net
432 :デフォルトの名無しさん[sage]:2015/09/22(火) 19:11:33.18 ID:FVa42+rI - >>431
>> ところが、JavaやC#といった言語は、原理上、そのような制限を受けません(バンク切り替えだとか、セグメントだとかの話はあえて無視)。 >> あくまでも原理上の話ではあるので、現状がそうなっているわけではないのですが、ポインタといった概念が言語上に出現しないことによって、 >> データをメモリ上の番地で表現する必要がないためです。 これがポインタの存在によって C や C++ に限っては成り立たないと言われているようだけど、 そんなことはないと思うんだ。 言語上の「ポインタ」を Java や C# の参照と同じように実装することは禁止されちゃいないわけで。 そこらへんわかってて言ってるの?
|
- C++相談室 part119 [転載禁止]©2ch.net
436 :432[sage]:2015/09/22(火) 19:26:32.23 ID:FVa42+rI - >>433
そうだね >399 からそう言われてるわけで、説得できるとはあんまり思ってない。 堂々と「以下のくだりは真」というのにツッコミ無しっていうのはマズいだろうと思った。
|
- C++相談室 part119 [転載禁止]©2ch.net
438 :デフォルトの名無しさん[sage]:2015/09/22(火) 19:33:20.20 ID:FVa42+rI - >>435
存在価値の話は関係無いと思うんだ。引用箇所は >>> あくまでも原理上の話ではあるので、現状がそうなっているわけではないのですが という話だからね。 C や C++ でも同じことでしょ、と言っている。
|
- C++相談室 part119 [転載禁止]©2ch.net
442 :デフォルトの名無しさん[sage]:2015/09/22(火) 19:44:12.61 ID:FVa42+rI - >>439
>385 で言ってた↓の根拠は不明で「ポインタのところに若干制限があった気がする。(ただこの辺は余り詳しくない)」ということでいいかな? > C/C++はメモリモデルがフラットで、リニアにアクセスできる前提だ。(ポインタは常にアクセス可能) > だから4GBの壁が直接見える。 なんかはっきりした根拠を思い出したら教えて欲しい。
|
- C++相談室 part119 [転載禁止]©2ch.net
447 :デフォルトの名無しさん[sage]:2015/09/22(火) 20:14:07.69 ID:FVa42+rI - >>444
> これに対して、C/C++では4GBの壁がユーザーに丸見えだ。 これも「気がする」かな。断言するなら根拠をはっきり示せることを確認してね。 > いずれにしても、C/C++言語自体で4GBの壁を越えたというのは言い過ぎだ。 だれもそんなことは言ってないと思うんだ。 「C/C++では4GBの壁がユーザーに丸見えだ」などという人が一人いるので、それは 言い過ぎだと言っている。 >>446 「演算子が上書きできない」→「4GBの壁」っていうつながりがあると思ってるのか。 ループ気味になってきたし、ここまでの書き込みをちゃんと読んで理解しようとしてくれていれば この流れでそんなこと言えるわけが無いと思うんで、僕もそろそろ降りさせてもらうよ。
|