C++入门基础05:表达式(表达式基础、算术运算符与赋值运算符、逻辑关系运算符、成员访问运算符与条件运算符、位运算符、移位运算符与类型转换)
创始人
2024-02-10 23:19:43

C++入门基础05:表达式(表达式基础、算术运算符与赋值运算符、逻辑关系运算符、成员访问运算符与条件运算符、位运算符、移位运算符与类型转换)

一、表达式基础

#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;
}

在这里插入图片描述

五、位运算符、移位运算符与类型转换

1、位运算符

为运算符:&(按位与); |(按位或); ^(按位异或);~(非/按位取反)。
&(按位与):只要有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;
}

在这里插入图片描述

2、移位运算符

移位运算很多时候在编程中是很有用的一个操作。

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;
}

在这里插入图片描述

3、类型转换(显式转换与隐式转换)

显式转换 与 隐式转换

#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;
}

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...