gpt4 book ai didi

c++ - 您可以将 nullptr 与其他指针进行比较以进行排序吗?它总是更小吗?

转载 作者:行者123 更新时间:2023-12-03 07:31:12 26 4
gpt4 key购买 nike

这个问题基于我发现监控可能内存泄漏的代码,因此它包含一些您可能不希望在常规程序中看到的代码,例如排序指针。
但是,我看到一个指针被设置为 nullptr然后将指针与最大地址进行比较。 C++标准是否保证nullptr总是小于 operator< 的其他指针?

最佳答案

nullptr is always smaller than other pointers for operator<


不,比较一个 nullptr用关系运算符的指针是 不支持 按标准。
要比较关系运算符的操作数,首先将以下规则应用于两个操作数,即
expr.rel#2

The usual arithmetic conversions are performed on operands of arithmetic or enumeration type. If both operands are pointers, pointer conversions and qualification conversions are performed to bring them to their composite pointer type. After conversions, the operands shall have the same type.

nullptr不是指针,而是称为空指针常量。因此,“执行指针转换和限定转换以将它们带入它们的复合指针类型”将不适用于它。所以,它违反了,转换后,操作数应该 同类型 .
Clang给出正确的诊断。由于代码格式错误,因此谈论结果是没有意义的。

关于c++ - 您可以将 nullptr 与其他指针进行比较以进行排序吗?它总是更小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65185742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com