一、逻辑运算符
C++语言中提供了三种逻辑运算符:与运算(&&)、或运算(||)、非运算(!)。与运算符(&&)和或运算符(||)均为双目运算符(运算所需变量为两个的运算符叫做双目运算符),具有左结合性。逻辑运算符和其他运算符优先级关系如:
按照运算符的优先顺序可以得出:
a>b&&c>d 等价于(a>b)&&(c>d)
!b= =c||d<a 等价于((!b)= =c)||(d<a)
a+b>c&&x+y<b 等价于((a+b)>c)&&((x+y)<b)
逻辑运算的值也为“真”和“假”两种,用“1”和“0”来表示。求值规则如下:
(1) 与运算:参与运算的两个量都为真是,结果才为真,否则为假。
(2) 或运算:参与运算的两个量有一个为真,则结果为真,两个量都为假时,结果为假。
(3) 非运算:参与运算量为真时,结果为假;参与运算量为假时,结果为真。
二、位运算符
运算符 | 含义 | 说明 | 例子 |
---|---|---|---|
& | 按位与 | 把参与运算的两个数对应的二进制位相与,只有对应的二进制均为1时,结果的对应为才为1,否则为0 | |
(竖杠) | 按位或 | 把参与运算的两个数对应的二进制位相或,也就是只要对应的两个二进制位有一个为1时,其结果就为1 | |
^ | 按位异或 | 把参与运算的两个数对应的二进制位相异或,当对应的二进制位上的数据字不相同时,结果对应为1,斗则为0 | 1^1=0 1^0=1 0^0=0 0^1=1 |
~ | 取反 | 把运算数的各个二进制位按位求反 | |
<< | 左移 | 把“<<”左边的运算数的各二进制位向左移若干位,“<<”右边的数是制定移动的位数,高位丢弃,低位补0。 | a<<4指把a的各二进位向左移动4位,如a=00000011(十进制3),左移4位后为00110000(十进制48) |
>> | 右移 | 把“>>”左边的运算数的各二进制位全部右移若干位,“>>”右边的数是指定移动的位数。 | 设a=15,a>>2表示把00001111右移为00000011(十进制3) |
说明:
对于有符号数,在右移时,符号为将随同移动。当操作数为正数时,最高位为0,而为负数时,最高位为1。最高位是补0或补1取决于编译系统的规定。
三、运算简写
例:a+=b等同于a=a+b
a&=b等同于a=a&b
a<<=b等同于a=a<<b
运算符优先级从低到高:
赋值运算符 逻辑运算符 关系运算符 算数运算符
关系运算符的结合性为:自左至右。
四、常用库x函数
函数名 | 格式 | 功能说明 | 例子 |
---|---|---|---|
绝对值函数 | abs(x) | 求一个数x的绝对值 | abs(-5)=5 |
自然数指数函数 | exp(x) | 求实数x的自然指数e^x | exp(0)=1 |
向下取整 | floor(x) | 求不大于实数x的最大整数 | floor(3.14)=3 |
向上取整 | ceil(x) | 求不小于实数x的最小整数 | ceil(3.14)=4 |
自然对数函数 | log(x) | 求实数x的自然数对数 | log(1)=0 |
指数函数 | pow(x,y) | 计算x^y,结果为双精度实数 | pow(2,3)=8 |
随机函数 | rand() | 产生0到RAND-MAX之间的随机整数 | |
平方根值函数 | sqrt(x) | 求实数x的平方根 | sqrt(25)=5 |
五、用cout控制精度输出
cout输出精度用于浮点数输出,包括float和double类型。
法1:
引用头文件iomanip, 并使用setiosflags(ios::fixed);配合setprecision。
例:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double f = 3.1415926535;
cout << f << endl; // 3.14159
cout <<setiosflags(ios::fixed); //只有在这项设置后,setprecision才是设置小数的位数。
cout << setprecision(0) << f << endl; //输出0位小数,3
cout << setprecision(1) << f << endl; //输出1位小数,3.1
cout << setprecision(2) << f << endl; //输出2位小数,3.14
cout << setprecision(3) << f << endl; //输出3位小数,3.142
cout << setprecision(4) << f << endl; //输出4位小数,3.1416
return 0;
}
法2:
加上头文件#include< iomanip>
cout<<fixed<<setprecision(2)<<a<<endl;
setprecision()括号里表示小数点后要输出几位小数,a代表输出的变量
例如:
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
double f =3.14159;
cout << setprecision (5) << f << endl;
cout << setprecision (9) << f << endl;
cout << fixed;
cout << setprecision (5) << f << endl;
cout << setprecision (9) << f << endl;
return 0;
}
输出结果:
3.1416
3.14159
3.14159
3.141590000
六、setw()函数
setw()函数只对其后面紧跟的输出产生作用,若输入的内容超过setw()设置的长度,则按实际长度输出。
setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
如:
cout<<setfill(’’)<<setw(5)<<‘a’<<endl;
则输出***a //4个字符和a共占五个位置