C++运算符、表达式 条件结构

  • 1.表达式与运算符
    • 1.1赋值运算符
    • 1.2算术运算符
    • 1.3关系运算符
    • 1.4逻辑运算符
    • 1.5位运算符
    • 1.6 sizeof()
    • 1.7 三目运算符
    • 1.8 运算符的优先级
  • 2.条件结构
    • 2.1--if
    • 2.2 --switch结构
    • 2.3 switch 和 多重if 结构的对比

条件结构)
《老九学堂C++课程》《C++ primer》学习笔记。《老九学堂C++课程》详情请到B站搜索《老九零基础学编程C++入门》

-------------简单的事情重复做,重复的事情用心做,用心的事情坚持做(老九君)---------------

1.表达式与运算符

(上一章只讲了算术运算符号)
运算符:赋值运算符,算术运算符,关系运算符,逻辑运算符
表达式:符号和操作数的组合

1.1赋值运算符

从右向左运算,将右边的值赋给左边的对象
复合赋值运算符: +=, *=, ,\=,

1.2算术运算符

一元运算符:++, --;二元运算符:+,-,*,/,%

1.3关系运算符

比较符号两边对象的关系,(结果是0/1):>,<,>=,<=,==,!=

#include <iostream>
int main(){cout << "15 > 88 吗?" << (15 > 88) << endl;cout << "16 > 99 吗?" << (16 < 99) << endl;cout << boolalpha;      // 设置输出True, Falsecout << "15 > 88 吗?" << (15 > 88) << endl;cout << "16 > 99 吗?" << (16 < 99) << endl;return 0;
}

输出

15 > 88 吗?0
16 > 99 吗?1
15 > 88 吗?false
16 > 99 吗?true

1.4逻辑运算符

(与、或、非)&&、||、 !
(python 中使用 and, or, not 来表示逻辑运算符 与,或,非)

1.5位运算符

运算符 作用 示例
& 按位与 两位同时为1时,结果为1
| 按位或 两位有一个为1时,结果为1
~ 按位非 操作数为1,结果为0;操作数为0,结果为1
^ 按位异或 两个操作数相同,结果为0,不同结果为1
<< 左移 右侧补零
>> 右移 左侧补符号位

#include <iostream>
int main(){cout << (4 & 5) << endl;cout << (~ 2) << endl; cout << (2 << 3) << endl; // 2->10,(1向左移动3位)->10000 =16cout << (16 >> 3) << endl;  // 16->10000,(尾部的元素舍弃掉3个)->10=2cout << (3 << 3)<< endl;    // 3->11 (1向左移动3位)-->11000=24return 0;
}

输出

4
-3
16
2
24

提示1: 正数按位取反后为负数,负数在内存中是以补码的形式存储的。2->00000010 取反11111101.第一个位符号位,第一位为为0正数,第一位为1的为负数。负数在计算机中以补码的方式存储,11111101如何转换为十进制呢?将二进制取反+1乘以负一。

提示2:区分cout 运算符(<<运算符重载),左移,右移操作符号两边都是数字,用在2 的倍数。用来处理2的倍数十分高效

1.6 sizeof()

Sizeof 认为是一个运算符,测量数据类型占内存空间的大小,单位为字节

sizeof(type_name)

demo1

#include <iostream>
using namespace std;
int main(){cout << sizeof(int) << endl;cout << sizeof(10) << endl;cout << sizeof(0.1) << endl;cout << sizeof("abc") << endl;  // 字符串类型会自动在末尾加\0return 0;}

输出

4
4
8
4

demo2: sizeof(num++)

int main(){int num = 5;cout << sizeof(num++) << endl;  //sizeof 只是一个运算符,不凑成任何运算,mac的编译器过不去cout << num << endl;return 0;
}

应该输出

4
5

1.7 三目运算符

(条件)?条件满足表达式的结果:条件不满足表达式的结果

int num= 5>6 ? 10 :12;

1.8 运算符的优先级

1.单目运算符~, ++,–,sizeof()
2.!
3.算术运算符
4.关系运算符
5.&&, ||
6.赋值运算符
(有限级别由上到下依次递减)

2.条件结构

2.1–if

单个if
代码格式(python 的条件/else后要接冒号,C++条件在括号中,代码块用大括号界定)整个if 语句作为一条语句

if(条件为真){//代码块1
}
else{//代码块2
}

demo1–硬盘盘符一半采用A-Z的大小字母表示,使用程序判断用户输入的字符是否是合法的硬盘盘符
(早期的计算机是AB软盘,所以硬盘盘符号一般从C开始)

int main18(){//使用程序判断用户输入的字符是否是 合法的硬盘盘符char pan = '\0'; //默认值设置为空字符,ASCII 码为0 的字符cout << "请输入一个字符,我来判断是否合法:";cin >> pan;// "A"~"Z"之间if ('A' <= pan && pan <= 'Z'){cout << "是合法的字符" << endl;}else{cout << "不是合法字符" << endl;}return 0;
}
请输入一个字符,我来判断是否合法:A
是合法的字符

demo2-购物车打折

int main(){// 购物车总价大于5W打7折,否则打9折double price_louis = 35000.0;double price_hemes = 11044.5;double price_chanel = 1535.0;double total_price = 0.0;double discout = 0.0;total_price = price_louis + price_hemes + price_chanel;if (total_price > 50000 || price_louis > 1000 || price_chanel > 1000 || price_hemes > 1000){discout = 0.7;}else{discout = 1.0;}cout << "最终付款: " << total_price * discout << endl;return 0;
}
最终付款: 33305.7

多重if结构
常用来做区间判断(python 中else if 是连在一起写的,写作elif)

if(条件1){//代码块1}
else if(条件2){//代码块2
}
else{//代码块3
}

2.2 --switch结构

开关语句,
1.switch 后的表达式只能是整型或者字符型,
2.case 后常量表达式的值不能相同;
3.可以不添加break,但是需要特别注意执行的顺序(进到一个分支里头,没有遇到break语句会一直执行到最后);
4.case 和defult字句的先后顺序可以自行变动>
用途:菜单选择,判断某个月份有几天

switch(表达式){case 常量1:语句1;break;
case 常量2:语句2;break;
...
default:语句;
}

demo1

int main(){int choice  = 2;switch(choice){case 1:cout << 1 << endl;case 2:cout << 2 << endl;case 3:cout << 3 << endl;break;case 4:cout << 4 << endl;}return 0;
}
2
3

demo 2: default 放在开头,如果所有的情况不满足的化会执行default,直至至遇到的第一break,或者最后;如果有一个case满足会执行该case,见demo3.

int main(){int choice  = 7;switch(choice){default:cout << 998 << endl;case 1:cout << 1 << endl;case 2:cout << 2 << endl;break;case 3:cout << 3 << endl;break;case 4:cout << 4 << endl;}return 0;
}
998
1
2

demo3–demo2的变形,如果有case 满足,是不会执行default 的了

int main(){int choice  = 3;switch(choice){default:cout << 998 << endl;case 1:cout << 1 << endl;case 2:cout << 2 << endl;break;case 3:cout << 3 << endl;break;case 4:cout << 4 << endl;}return 0;
}
3

2.3 switch 和 多重if 结构的对比

相同点:都是用来处理多分支条件结构
不同点:
switch: 等值条件判断,条件个数有限(杀鸡刀,大于20个分支,就不要用了)
多重if:判断某个连续区间时的情况(杀牛刀)
demo: 判断一个有多少天, case 中的语句可以省略

int main(){//判断某月有多少天int month = 2;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:cout << "31天" << endl;break;case 4:case 6:case 9:case 11:cout << "30天" << endl;break;case 2:cout << "28 或者 29 天" << endl; break;}return 0;
}
28 或者 29 天

C++(5)--运算符、表达式、条件结构(if, switch)相关推荐

  1. 【JAVA SE】第三章 运算符、条件语句、switch结构、while循环、do…while循环、for循环、break关键字以及break和continue关键字

    第三章 运算符.条件语句.switch结构.for循环.break关键字以及break和continue关键字 文章目录 第三章 运算符.条件语句.switch结构.for循环.break关键字以及b ...

  2. C#基础解析之Ⅱ【运算符和条件结构】

    今天和大家来分享C#中的运算符和条件结构. 在前言中我们已经简单的了解了一下C#语言,大概的知道了C#的基本内容,在今后的解析中我们一步一步的把C#封装到我们的大脑当中,以便以后调用. Ok!我们今天 ...

  3. 【我不做人啦!Java!】2.运算符和条件结构

    -----1----- if, if-else结构 (1) 都教授买了一筐鸡蛋,如果坏蛋少于5个,他就吃掉,否则他就去退货 (2) 要求用户输入两个整数a.b,如果a能被b整除或a加b大于1000,则 ...

  4. c语言条件运算符ppt,C语言程序设计——运算符 条件结构.ppt

    C语言程序设计--运算符 条件结构 第三章 运算符 目标 理解表达式 掌握赋值运算符的用法 熟练使用关系运算符 掌握简单的条件语句的使用 熟练使用逻辑运算符 了解sizeof运算符 理解运算符的优先级 ...

  5. if 条件语句;switch 条件结构语句

    ()小括号的作用 先乘除后加减 1. 在算术运算符中 () 可以提供计算的优先级,有括号的先计算 console.log((3+5)*2) 2. () 可以把 js 放在 () 里面,表示一个整体 v ...

  6. c语言表达式用法,C语言 运算符、表达式和条件结构 用法总结

    运算符.表达式和条件结构 内容概要:各种运算符的使用 运算符的优先级 表达式的计算 条件分支结构判断的常用结构 表达式: 表达式是运算符和操作数的组合,如下所示: s = ( n + 9 ) * ( ...

  7. 3.运算符、if条件结构

    运算符.if条件结构 关系运算符 == != < > >= <= 1.关系运算符运算的结果是boolean类型 2.可以使用boolean类型的变量接收关系运算的结果 publ ...

  8. Java基础语法-条件结构-switch条件结构

    1.什么是switch条件结构 switch 条件结构的使用是搭配 case 关键字来使用的. 表示 判断一个变量与一系列值中的某个值是否相等,其中每个值称为一个分支. 2.switch的语法结构 s ...

  9. C# 运算符及条件控制语句

    补充 分类 符号 解释 优先级 算数 ++  -- 加加(加1)  减减(减1) 由高到低,即执行顺序由上到下(圆括号的优先级最高) *  /  % 乘  除  取余 +  - 加  减 关系 < ...

最新文章

  1. linux压缩一个文件的命令行,linux下用命令行解压缩文件
  2. java中图片和字节数组相互转化
  3. 硬件开源需求迫切?开源笔电 Nevona 筹款金额达预设目标3倍
  4. 服务器主板北桥芯片组有哪些,主板芯片组_目前的主板芯片组都有哪些?
  5. Redis的常用命令及数据类型
  6. SpringMvc-MockMvc
  7. 朝阳工程技术学校计算机应用,超8成高职院校开设“计算机应用技术专业”
  8. 关于FileAttributes
  9. 关于STM32没有硬件浮点单元的纯经验之谈,是否可以在stm32上用float运算?
  10. matlab画直方图
  11. Reed-Solomon纠错码(RS码)(里德-所罗门码)
  12. 博客整理——软件工程实践总结
  13. 二十、融会贯通之全流程操作
  14. (信号灯七)综合版本-使用HSV颜色空间将类绿色、红色和黄色区域分别二值化
  15. 基于蜜蜂算法的函数寻优及TSP搜索算法
  16. 微软word如何插入页码_如何在Microsoft Word中使用页码
  17. Noble - Window平台NodeJs蓝牙BLE开发库
  18. 洛谷P2356 弹珠游戏
  19. 利用Pyecharts绘制漏斗图的案例【含参数详解】
  20. python3 爬虫之爬取糗事百科

热门文章

  1. asterisk 学习笔记1
  2. linux查询服务器的dns,如何查看Linux系统中DNS服务器的运行状况
  3. android 多个按钮响应,处理Android Recyclerview中的多个按钮单击并将响应存储在Array或ArrayList中...
  4. 开机未发现nvidia控制面板_修改这几个选项,就能提升你的开机速度
  5. 香肠派对电脑版_《香肠派对》是不是除了《和平精英》最成功的吃鸡手游:靠恶搞火了?...
  6. 【转】.net异步性能测试(包括ASP.NET MVC WebAPI异步方法)
  7. 【转】1.5 运行原理剖析
  8. 解决Sharepoint每天第一次打开速度慢的问题
  9. UWP 使用OneDrive云存储2.x api(二)【全网首发】
  10. docker多个容器一起打包_如何链接多个Docker容器并封装结果?