目录 编辑器vs2017
逗号运算和逗号表达式
表达式1,表达式二
- 先求解表达式1,再求解表达式2
- 最终整个逗号表达式的结果为表达式2的值(不是说a的值就等于表达式2的值了,逗号表达式只计算,如果没有赋值给x则表现不出来逗号表达式的计算结果)
例如:
#include<iostream>
using namespace std;
int main()
{
int a;
int x;
x=(a= 3 * 5, a * 4);
cout << "a的值为" << a << endl;
cout << "x的值为" << x << endl;
return 0;
}
结果
关系运算与关系表达式
是一种简单的逻辑运算,因此结果类型为bool,值只能为true 或false
比较运算符:
1.优先级(高)
< <= > >=
2.优先级(低)
== !=
例如
a>b,c<=a+b,x+y==3
逻辑运算符与逻辑表达式
运算符
!(非) &&(与) ||(或)
优先级:高——低
结果
bool类型
表达式
(a>b)&&(x>y)
- &&
两侧表达式都为真,则结果为真,否则结果为假 - ||
两侧表达式有一个为真,则结果为真
条件表达式与条件运算符
- 一般形式
表达式1?表达式2:表达式3
表达式1必须是bool类型 - 执行顺序
先求解表达式1
若表达式1为true,则求解表达式2,表达式2的值为最终结果
若表达式1为false,则求解表达式3,结果为表达式3 - 例如
int a = 4, b = 5;
int num,num2;
num = a > b ? 8 : 9;
num2 = a < b ? 8 : 9;
cout << "num的值为" << num << endl;
cout << "num2的值为" << num2 << endl;
结果
sizof运算、位运算
sizeof运算
语法形式
sizeof(类型名/表达式/变量名)或 sizeof 类型名/表达式/变量名
结果值
“类型名/表达式”所指定的类型所占的字节数。
int a = 2;
cout << sizeof(a) << endl;
位运算——按位与(&)
运算规则
将两个运算量的每一个位进行逻辑与运算
例如:4&5
4:00000100
5:00000101
结果:00000100
结果为4;
int a = 2, b = 5, d = 4;
int c = a & b;
int e = d & b;
cout << "c的值为" << c << endl;
cout << "e的值为" << e << endl;
用途举例:将某一位置置0,其他位不变
例如:将char型变量a的最低位置为0:a=a&0xfe(1111 1110)
用途举例:取处指定位
例如:有char c;int a;取处a的低字节置于c中:
c=a&0xff(1111 1111)
结果取处了a的低八位,赋值到c中
按位或
例1:
将某些位置置1,其他位置不变。将int变量a的低字节置1;
a=a|0xff;
按位异或
运算规则:
两个操作数进行异或,
若对应位相同,则结果为0,
若不相同,则结果为1,
例题:71^52
int k = 71^ 52;
//71: 0 1 0 0 0 1 1 1
//52: 0 0 1 1 0 1 0 0
//71^52: 0 1 1 1 0 0 1 1
cout << k << endl;
作用:
1、使指定位反转
按位取反
符号~
位运算——移位(<< ,>>)
左移:<<
左移后,低位补0,高位舍弃
右移:>>
低位:舍弃
高位:无符号数:补0 有符号数:补符号位
16进制的计算
0x开头表示16进制
1,2,3,4,6,7,8,9,a,b,c,d,e,f
0xff = 15 * 16 ^ 1 + 15 * 16 ^ 0=240+15=255;
(突然发现c++语法中, ^ 不能表示次方,是表示异或操作的,应该是matlab中这样表示的吧,记错了,vs2017中不能这样表示,事实上我没有进行计算哈,只是因为这个编辑器我不会打乘法符号,就顺便在代码编辑器中写了一下解释说明,方便理解)
运算符优先级问题
数据类型由低到高
char(unsigned) short(unsigned) int(unsigned) long(unsigned)
longlong float double
两个运算数据不同时,由低类型向高类型转换
布尔类型:
将一个非布尔类型的算术值赋给布尔类型时,算数值为0则结果为false,否者结果为true;
将一个布尔类型值赋给非布尔类型时,布尔值为false,则结果为0,布尔值为true则结果为1;