(T*)0 - (T*)0
が明確に定義されているのでしょうか? 0
と等しいことが保証されていますか?
CとC++で同じですか?そうでない場合、違いは何ですか? C++で
(ポインタ演算は、彼らのために動作しないので、もちろん、T
は、void
もstd::nullptr_t
ではありません。)
(T*)0 - (T*)0
が明確に定義されているのでしょうか? 0
と等しいことが保証されていますか?
CとC++で同じですか?そうでない場合、違いは何ですか? C++で
(ポインタ演算は、彼らのために動作しないので、もちろん、T
は、void
もstd::nullptr_t
ではありません。)
、[expr.add]/7参照:二つのポインタ場合
を[...]の両方がnullであります2つのポインタが を差し引いた場合、結果は
0
と の型std::ptrdiff_t
に変換された値と等しいと比較されます。
(これはまた、この段落を短くれ、P0137で保持する。)
をC11において、挙動は6.5.6/9の通り明らかに定義されていません:
二つのポインタが減算される場合は、両方とも同じ配列オブジェクトの の要素を指すか、または配列オブジェクトの最後の要素を先に指すポインタです。 結果は2つの配列 要素の添字の違いになります。
open-std.orgにはサーバーの問題があるように見えるため、Googleキャッシュサイトにリンクしています。 – Columbo
古い質問は、古いバージョンのCおよびC++に明示的に限定されています。この質問は、より現代的なバージョンの回答を集めていたので、私は再開することにしました。 –
@AdrianMcCarthyわかりません。それは一般的なC++/cタグに加えて古いバージョンでタグ付けされていましたが、一番上の投票回答は、C++ 03とC++ 11バージョンのこの質問に対する唯一の答えと同じソースのように見えます – Foon