给定以下代码:
char buffer[1024];
char * const begin = buffer;
char * const end = buffer + 1024;
char *p = begin + 2000;
if (p < begin || p > end)
std::cout << "pointer is out of range\n";
执行的比较 (p < begin
和p > end
) 是否明确?或者此代码是否具有未定义的行为,因为指针已超出数组末尾?
如果比较定义明确,那么该定义是什么?
(额外的功劳:对自身的评估是begin + 2000
不确定的行为吗?)