相关疑难解决方法(0)

将指针与不同数组进行比较以获得相等性是否是未指定的行为?

等于运算符对指针的关系运算符有语义限制:

==(等于)和!=(不等于)运算符具有与关系运算符相同的语义限制,转换和结果类型,除了它们的优先级和真值结果.[C++03§5.10p2]

关系运算符对比较指针有限制:

如果同一类型的两个指针p和q指向不是同一个对象的成员或同一个数组的元素或不同函数的不同对象,或者只有其中一个为null,则p <q,p的结果> q,p <= q,p> = q未指定.[§5.9p2]

这是一个由等式运算符"继承"的语义限制吗?

具体来说,给出:

int a[42];
int b[42];
Run Code Online (Sandbox Code Playgroud)

很明显,(a + 3)<(b + 3)是未指定的,但是(a + 3)==(b + 3)也未指定?

c++ standards pointers unspecified-behavior

16
推荐指数
3
解决办法
2565
查看次数

标签 统计

c++ ×1

pointers ×1

standards ×1

unspecified-behavior ×1