#include
//系统定义头文件一般是尖括号
#include
#include
using namespace std;struct Demo {int num1 = 5;int num2 = 10;
};//表达式基础
int main()
{//表达式//3+2 a+b 3*4+2//运算符求值顺序以及优先级//3*4+2 (3+5)*4+2 = == ++ -- .Demo demo;cout << demo.num1 + 5 + demo.num2 * 4 << endl;// 取成员的优先级比 + 和 * 要高。// 5+5+40 = 50//不同类型对象参与运算的对象转换float a = 10.8f;int b = 5;//先将int转为float,再参与计算cout << a + b << endl;//括号无视优先级//不知道优先级可以用括号来解决if ((a == b) || (a > 0)) {cout << "if" << endl;}return 0;
}




#include
//系统定义头文件一般是尖括号
#include
#include
using namespace std;//表达式基础
int main()
{//算术运算符// + - * / % (求余/取模)cout<< 3+5 << endl;cout<< 10-2 << endl;cout<< 6*8 << endl;cout<< 9/3 << endl;cout<< 10%3<< endl;cout << "\n" << endl;//赋值运算符// = += -= *= /= %=// 赋值 先加再赋值 先减再赋值 先乘再赋值 先除再赋值 求余再赋值(求余计算必须是整数)int a;a = 10;cout << a << endl;a += 5; // a = a + 5;cout << a << endl;//其他同理....a %= 3;cout << a << endl;cout << "\n" << endl;//自增/自减运算符//++ -- a++; //a = a +1cout << a << endl;a--; //a = a -1cout << a << endl;cout << "\n" << endl;int b = 6;cout << b << endl;cout << b++ << endl; //先将b赋给表达式后,再做自增运算。(输出的是表达式的结果)cout << b << endl;cout << ++b << endl; //先进行自增运算,再将结果赋给表达式。(输出的是表达式的结果)cout << b << endl;return 0;
}

#include
//系统定义头文件一般是尖括号
#include
#include
using namespace std;//表达式基础
int main()
{ //逻辑运算符//!逻辑非//&& 逻辑与//|| 逻辑或int a = 9;int b = -2;if (a > 0 && b > 0)cout << "(a > 0 && b > 0):"<< (a > 0 && b > 0) << endl;if(a > 0 || b > 0)cout << "(a > 0 || b > 0):" << (a > 0 || b > 0) << endl;bool c = true;if (!c)cout << " c的值是假的,就是false" << endl;cout << "\n" << endl;//关系运算符//>> = <<= == !=cout << "a>b:" << (a > b) << endl;cout << "a>=b:" << (a >= b) << endl;cout << "a

#include
//系统定义头文件一般是尖括号
#include
#include
using namespace std;struct Student {string name = "zhangsan";int age = 12;
};//表达式基础
int main()
{ //成员访问运算符//. ->Student* stu = new Student();//通过指针访问成员。cout << stu->name << "," << stu->age << endl;//这里可以解引用,通过点的方式访问。cout << (*stu).name << "," << (*stu).age << endl;//条件运算符//?://(条件表达式) ? (满足条件执行第一条) : (不满足执行第二条)int a = 10;int b = 5;int c;a > b ? (c = a) : (c = b);//求较大值a < b ? (c = a) : (c = b);//求较小值cout << "c:" << c << endl; //单目运算符: ++ --//双目运算符: + - * / %//三目运算符: 条件运算符return 0;
}

为运算符:&(按位与); |(按位或); ^(按位异或);~(非/按位取反)。
&(按位与):只要有0,就是0。
|(按位或):只要有1,就是1。
^(按位异或):相同为0,相异为1。
~(非/按位取反):0取反为1,1取反为0。
13的二进制是=>1101
数字在计算机中存储是按照二进制进行存储的,一个数按照8位进行存储的话,最高位是一个符号位,表示正数还是负数,那么对于13这个数,是一个整数,那么二进制存储就是00001101,数字在计算机中是以补码的形式进行存储的,对于正数来说,原码和补码是一样的,但是对于负数来说,原码等于补码取反再加1(比如11110010,该二进制数的原码是这个11110010先减1再取反,11110010减1为11110001,再取反(最高位不取反)10001110,原码结果为10001110,为-14)。
原码:00001101 =>13
补码:00001101
00001101 取反=> 11110010 负数补码求原码=> 补码减1再取反=> 10001110=> -14
补码:11110010
原码:10001110 => -14

#include
//系统定义头文件一般是尖括号
#include
#include
using namespace std;//位运算符与类型转换
int main()
{ //位运算符(针对整数)//为运算符:&(按位与) |(按位或) ^(按位异或)~(非/按位取反); 关系运算符(对应的是表达式):&& || !//整数的二进制表示//二进制:十进制=>2:10;3:11;4:100...int a = 13; //13 = 8+4+1=> 1101int b = 6; // 6 =4+2 =>0110cout << "按位与:" << (a & b) << endl;cout << "按位或:" << (a | b) << endl;cout << "按位异或:" << (a ^ b) << endl;cout << "按位取反:" << ~a << endl;return 0;
}

移位运算很多时候在编程中是很有用的一个操作。
13 = 8+4+1=> 1101 左移2位,就是110100 = 52。
左移就是乘以2,左移几位就是乘以几次2。13 *2 *2 = 52。
6 =4+2 =>0110 右移2位,就是01 = 1。
右移就是除以2,右移几位就是除以几次2。6 /2 /2 = 1。

#include
//系统定义头文件一般是尖括号
#include
#include
using namespace std;//位运算符与类型转换
int main()
{ //位运算符(针对整数)//为运算符:&(按位与) |(按位或) ^(按位异或)~(非/按位取反); 关系运算符(对应的是表达式):&& || !//整数的二进制表示//二进制:十进制=>2:10;3:11;4:100...int a = 13; //13 = 8+4+1=> 1101int b = 6; // 6 =4+2 =>0110//移位运算符//<<(左移)>>(右移)cout << "a左移2位:"<< (a << 2) << endl;cout << "b右移2位:" << (b >> 2) << endl;return 0;
}

显式转换 与 隐式转换
#include
//系统定义头文件一般是尖括号
#include
#include
using namespace std;int main()
{ //类型转换//显式转换 与 隐式转换//隐式转换:(可能损失精度)//short->int//bool:0 1 (非0的数转为1)int c = 3.14;cout << "c:" << c << endl;//显式转换://转换运算函数//static_cast const_castreturn 0;
}

上一篇:动态内存管理❀C