Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “(T*)0-(T*)0”是否定义为0?_C++_C_Pointers_Language Lawyer - Fatal编程技术网

C++ “(T*)0-(T*)0”是否定义为0?

C++ “(T*)0-(T*)0”是否定义为0?,c++,c,pointers,language-lawyer,C++,C,Pointers,Language Lawyer,考虑以下代码: #include <iostream> int main() { int *a = 0, *b = 0; std::cout << (a - b); } #包括 int main() { int*a=0,*b=0; STD:C++中的CUT< P>,参见: 如果两个指针[…]都为空,则两个指针都为空 减去后,结果比较等于转换为的值0 类型std::ptrdiff\u t (这也适用于,缩短了本段。) 在C11中,行为显然未根据6.5.6

考虑以下代码:

#include <iostream>

int main()
{
    int *a = 0, *b = 0;
    std::cout << (a - b);
}
#包括
int main()
{
int*a=0,*b=0;
STD:C++中的CUT< P>,参见:

如果两个指针[…]都为空,则两个指针都为空 减去后,结果比较等于转换为的值
0
类型
std::ptrdiff\u t

(这也适用于,缩短了本段。)

在C11中,行为显然未根据6.5.6/9进行定义:

减去两个指针后,两个指针都应指向 相同的数组对象,或数组对象的最后一个元素后一个元素; 结果是两个数组的下标不同 元素


链接到谷歌缓存网站,因为open-std.org似乎(再次)旧的问题明确地局限于C++和C++的旧版本。这个问题吸引了更多的现代版本的答案,所以我投票赞成重新开放。@ AdRiangMcCasy不确定我会遵循。对于C++03和C++11版本的标准,源代码是这个问题的唯一答案