关系运算符:<
、>
、<=
和 >=
语法
expression < expression
expression > expression
expression <= expression
expression >= expression
备注
二进制关系运算符确定下列关系:
小于号 (
<
)大于号 (
>
)小于或等于 (
<=
)大于或等于 (
>=
)
关系运算符具有从左到右的关联性。 关系运算符的两个操作数必须是算术或指针类型。 它们将生成 bool
类型的值。 如果表达式中的关系为 false,则返回的值为 false
(0);否则返回的值为 true
(1)。
示例
// expre_Relational_Operators.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
cout << "The true expression 3 > 2 yields: "
<< (3 > 2) << endl
<< "The false expression 20 < 10 yields: "
<< (20 < 10) << endl;
}
前面的示例中的表达式必须括在括号中,因为流插入运算符 (<<
) 的优先级高于关系运算符。 因此,未括在括号中的第一个表达式的计算结果将为:
(cout << "The true expression 3 > 2 yields: " << 3) < (2 << "\n");
标准转换中介绍的常用算术转换将应用于算术类型的操作数。
比较指针
在比较两个指向同一类型的对象的指针时,结果由程序的地址空间中所指向的对象的位置决定。 也可以将指针与计算结果为 0 的常数表达式或 void *
类型的指针进行比较。 如果针对 void *
类型的指针执行指针比较,则另一个指针将隐式转换为 void *
类型。 然后进行比较。
不能比较两个类型不同的指针,除非:
一个类型是派生自另一个类型的类类型。
至少有一个指针显式转换(强制转换)为类型
void *
。 (对于该转换,另一个指针将隐式转换为类型void *
。)
两个指向同一对象的相同类型的指针一定是相等的。 如果比较两个指向对象的非静态成员的指针,则以下规则将适用:
如果类类型不是
union
,并且如果两个成员未通过 access-specifier(例如,public
、protected
或private
)分隔开,则指向最后声明的成员的指针将大于指向之前声明的成员的指针。如果两个成员通过 access-specifier 分隔开,则结果是不确定的。
如果类类型是
union
,则指向该union
中不同的数据成员的指针是相等的。
如果两个指针指向同一数组的元素或指向超出数组末尾 1 的元素,则指向带较高下标的对象的指针会更高。 仅当指针引用同一数组中的对象或超出数组末尾 1 的位置时,才能保证指针比较有效。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈