C++中有众多的操作符来对其C++的程序内容进行运算,有:
3.6 关系运算和逻辑运算
C++中若要比较数据时可以使用关系运算符,同样在进行逻辑层面的运算时,用逻辑运算符将逻辑量进行连接。
3.6.1 关系运算和关系表达式
C++的关系运算符:
< |
小于 |
<= |
小于或等于 |
> |
大于 |
>= |
大于或等于 |
== |
等于 |
!= |
不等于 |
前4种关系运算符( < <= > >=)的优先级别相同,后2种的也相同,但前4种的关系运算符要大于后2种。
可以看到关系运算符的优先级在6、7的位置。
一些关系运算的等效:
c>a+b |
等效于c>(a+b) |
a>b==c |
等效于(a>b)==c |
a==b<c |
等效于a==(b<c) |
a=b>c |
等效于a=(b>c) |
用关系运算符将两个表达式连接起来的式子,称关系表达式。
一般形式 :表达式 关系表达式 表达式
表达式可以是算数表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式:
一些合法的形式: a>b a+b>b+c (a==3)>(b==5) 'a'<'b' (a>b)>(b<c)
任何表达式都应该有一个确定的值,但关系表达式的值是一个逻辑值,即“真”或“假”。在C和C++中都用数值1代表“真”,用0代表“假”。
d=a>b //d得到的值为1
f=a>b>c //f得到的值为0(因为">"运算符是自左至右,先执行"a>b"得值为1)
//再执行关系运算"1>c",得值0,赋给f
3.6.2 逻辑常量和逻辑变量
C语言没有提供逻辑型数据,关系表达式的值用数值1和0代替。C++增加了逻辑型数据。逻辑型常量只有两个,即false (假)和true(真)。逻辑型变量要用类型标识符bool(布尔变量)来定义。
3.6.3 逻辑运算和逻辑表达式
C++提供3种逻辑运算符:
(1)&& 逻辑与 (相当于其他语言的AND)
(2) | | 逻辑或 (相当于其他语言的OR)
(3) ! 逻辑非 (相当于其他语言的NOT)
逻辑运算的“真值表”:
优先次序:
(1)!(非)---> &&(与)---> | | (或)
(2)逻辑运算符中的“&&”和“||”低于关系运算符,“ !”高于算术运算符。
同样将两个关系表达式用逻辑运算符连接起来就成为了一个逻辑运算符,
一般形式:表达式 逻辑运算符 表达式
编写程序:判断闰年
#include<iostream>
using namespace std;
int main()
{
int year;
bool leap;
cout << "please enter year:";
cin >> year;
if (year % 4 == 0)
{
if (year % 100 == 0)
{
if (year % 100 == 0)
leap = true;
else
leap = false;
}
else
leap = true;
}
else
leap = false;
if (leap)
cout << year << "is ";
else
cout << year << "is not ";
cout << "a leap year." << endl;
return 0;
}
可以通过逻辑表达式来简化过程:
#include<iostream>
using namespace std;
int main()
{
int year;
cin >> year;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
cout << year << " is a leap year.";
else
cout << year << " is not a leap year.";
return 0;
}