在c++编程语言中,!=是不等于运算符,用于判断两个操作数的值是否不相等,如果两者不相等则返回true,相等则返回false,是程序逻辑判断中非常基础且常用的运算符。

!=运算符的基本定义
!=属于c++中的二元关系运算符,需要两个操作数参与运算,操作数可以是变量、常量、表达式结果等任意可比较的类型。它的核心作用是判断左右两个操作数的值是否不相等,运算结果是一个布尔值,即true或者false。
需要注意的是,!=的比较逻辑是判断值是否不相等,而不是判断两个变量是否指向同一个内存地址,这一点和很多新手容易混淆的引用、指针比较场景有区别。
基础使用示例
下面通过简单的代码示例展示!=运算符的基础用法:
#include <iostream>
using namespace std;
int main() {
int a = 10;
int b = 20;
// 判断a和b是否不相等
if (a != b) {
cout << "a和b不相等" << endl;
} else {
cout << "a和b相等" << endl;
}
// 常量比较
if (5 != 3) {
cout << "5和3不相等" << endl;
}
// 表达式结果比较
if (a + 5 != b) {
cout << "a加5的结果和b不相等" << endl;
}
return 0;
}
上述代码中,第一个判断a和b的值分别为10和20,不相等所以会输出对应提示,第二个判断5和3不相等也会输出提示,第三个判断a+5等于15,和b的20不相等,同样会输出对应内容。
常见使用场景
条件判断场景
在if、else if等条件判断语句中,!=常用于判断某个变量是否满足不等于特定值的条件,比如判断输入的数值是否不是预期值:
#include <iostream>
using namespace std;
int main() {
int user_input;
cout << "请输入一个整数:" << endl;
cin >> user_input;
// 判断输入是否不是0
if (user_input != 0) {
cout << "输入的数值不是0" << endl;
} else {
cout << "输入的数值是0" << endl;
}
return 0;
}
循环控制场景
在while、do-while等循环语句中,!=常用于控制循环的执行条件,比如当某个变量不等于特定值时持续执行循环:
#include <iostream>
using namespace std;
int main() {
int count = 0;
// 当count不等于5时持续循环
while (count != 5) {
cout << "当前count值为:" << count << endl;
count++;
}
cout << "循环结束" << endl;
return 0;
}
自定义类型的!=重载
对于c++中的自定义类或者结构体,如果需要使用!=运算符比较两个对象,需要重载!=运算符,下面是一个简单的示例:
#include <iostream>
using namespace std;
// 定义自定义结构体
struct Point {
int x;
int y;
// 重载!=运算符
bool operator!=(const Point& other) const {
return x != other.x || y != other.y;
}
};
int main() {
Point p1 = {1, 2};
Point p2 = {1, 3};
if (p1 != p2) {
cout << "两个点不相等" << endl;
}
return 0;
}
使用注意事项
- !=运算符的优先级低于算术运算符,比如
a + 1 != b会先计算a+1的结果再和b比较,不需要额外加括号。 - 比较浮点数时,由于浮点数存在精度误差,不建议直接使用!=判断两个浮点数是否不相等,最好判断两者的差值是否大于一个极小的阈值。
- 不要将!=和赋值运算符=混淆,很多新手会写出
if (a != 1)写成if (a = 1)的错误代码,后者是赋值操作,会将a赋值为1,然后判断1是否为真,逻辑完全错误。 - 对于指针类型,!=比较的是两个指针存储的地址是否不相等,而不是指针指向的内容是否不相等,如果需要比较内容需要解引用后再比较。
常见错误示例
下面展示一个新手常犯的错误示例:
#include <iostream>
using namespace std;
int main() {
int a = 10;
// 错误写法:将!=写成=
if (a = 20) { // 这里是赋值操作,不是不等于判断
cout << "a不等于20" << endl;
} else {
cout << "a等于20" << endl;
}
return 0;
}
上述代码中,if条件里的a = 20是赋值操作,会将a的值修改为20,然后判断20是否为真,20是非零值所以条件为真,会输出错误的结果,正确的写法应该是if (a != 20)。