考虑:
constexpr char s1[] = "a";
constexpr char s2[] = "abc";
std::memcmp(s1, s2, 3);
Run Code Online (Sandbox Code Playgroud)
如果memcmp在它看到的第一个差异处停止,它将不会读取超过s1的第二个字节(nul终止符),但是我没有在C标准中看到任何确认此行为的内容,并且我不知道任何内容扩展它的C++.
n1570 7.24.4.1 PDF链接
int memcmp(const void *s1, const void *s2, size_t n);该
memcmp函数将n指向的对象的第一个字符与指向的对象s1的前n个字符进行比较s2
我的理解是正确的,标准将行为描述为读取n两个参数的所有字节,但是库可以短路 - 如果它们一样?
c++ ×1