运算符和分支

运算符和分支

1. 运算符
1.1 自增自减运算符

基本格式: ++ –

作用:自增自减运算符操作的变量,存储数据自增 1 或者 自减 1

语法规则:

  • 自增自减运算符有且只能操作变量,不允许操作常量
  • 自增自减运算符在变量之前,首先修改变量数据,之后提取变量存储数据内容参与当前行代码运行
  • 自增自减运算符在变量之后,首先提取变量存储数据内容参与当前行代码运行,提取之后自增自减运算符立即对当前变量数据进行修改

墙裂建议

  • 自增自减运算符尽量减少使用,如果必要使用请单独成行
  • 建议使用 += 1 和 -= 1 替代自增自减运算符,提升代码阅读性
1.2 面试题
int num = 5;
int ret = num++ * ++num;

/*
num = 7
ret = 35

解答:
	num = 7 因为 num 在整个代码中执行了两次自增操作,num 原本为 5,自增两次之后为 7

	int ret = num++ * ++num;
		num++ 自增在后
			1. 首先提供变量存储数据内容给到当前行代码,对于表达式而言 提供的数据为【5】
			2. 之后 num 存储的数据自增操作,num 存储的数据为 6
		++num 自增在前
			1. 首先执行自增操作,对 num 存储的数据内容进行修改,之前表达式中 num 数据
			存储情况已经修改为 6,num 执行自增操作,num 存储数据为 7
			2. 之后提供当前 num 存储数据给到表达式执行,提供给表达式的数据为【7】

		int ret = 5 * 7 ==> 35
*/
int num = 5;
int ret = num++ * ++num - (num++ - num--) / num-- + --num;
int num = 5;
++(num++);  // ++num++

/*
num = ?;
语法错误!

原则
	自增自减运算符有且只能操作变量,不允许操作常量。
	++(num++)
		按照小括号操作优先,num++,提供当前存储数据 5 参与当前行代码,同时 num 变量存储
		的数据自增 1 ,当前 num 存储结果为 6

		整个表达式变为 ++(5), 5 是一个数据,是一个值,是一个常量!自增自减运算符不得操作
		常量,语法错误!
*/
1.3 逻辑运算符

与 或 非

与: && 同真为真,有假【即】假

或: || 有真【即】真,同假为假

非: ! 强牛,犟, 取反

#include <iostream>

using namespace std;

int main(int argc, char * argv[])
{
	bool ret = 10 > 5 && 10 > 6;
	cout << "ret : " << ret << endl; // true

	ret = 10 > 5 && 10 > 20;
	cout << "ret : " << ret << endl; // false

	ret = 10 > 5 || 10 > 20;
	cout << "ret : " << ret << endl; // true

	ret = 10 > 15 || 10 > 20;
	cout << "ret : " << ret << endl; // false
	
	ret = !(10 > 5 && 10 > 20);
	cout << "ret : " << ret << endl; // true

	ret = !(1);
	cout << "ret : " << ret << endl; // false

	return 0;
}
1.4 逻辑运算符短路原则

用于优化条件排列,降低代码运行逻辑复杂度!

int num = 10;
bool ret = num > 15 && ++num > 5;

ret = false(0);
num = 10;
/*
解答:
	逻辑与短路原则, 同真为真,有假【即】假。
	如果逻辑与中发现了 false 条件,整个表达式的结果可以明确为 false,从 false 条件开始之后的内容不再执行,CPU 可以降低一定的工作压力。
	num > 15 && ++num > 5;
		num > 15 ==> 10 > 15 ==> false 整个表达式结构为 false
		与之后的 ++num > 5 不再执行!
		num 数据没有被自增修改。
*/
int num = 10;
bool ret = num > 5 || ++num > 5;

ret = 1;
num = 10;
/*
解答:
	逻辑或短路原则,|| 有真【即】真,同假为假
	如果逻辑或中发现了 true 条件,整个表达式结果可以明确为 true,从 true 条件开始之后的内容不再执行,提升 CPU 执行效率和代码效率。
	num > 5 || ++num > 5;
		num > 5  ==> 10 > 5 ==> true 整个表达式结果已明确!!!
		后续内容不再执行!
		之后的 ++num > 5 不再执行!
		num 数据没有被自增修改。
*/
1.5 运算符案例
  • 字符判断,字符操作请使用字符本身,不要使用编码值。

    • 判断一个字符是否为数字字符

      char ch = '1'; // 数字字符
      
      bool ret = ch >= '0' && ch <= '9'; // 限制判断当前字符是否在数字字符范围以内
      
    • 判断一个字符是否为英文大写字母

      char ch = 'Q'; // 英文大写字母
      
      bool ret = ch >= 'A' && ch <= 'Z'; // 限制判断当前字符是否在英文大写字符范围以内
      
    • 判断一个字符是否为英文小写字母

      char ch = 'q'; // 英文小写字母
      
      bool ret = ch >= 'a' && ch <= 'z'; // 限制判断当前字符是否在英文小写字符范围以内
      
    • 判断一个字符是否为英文字母

      char ch = 'a'; // 英文字母
      
      // 判断字符是否为英文字符条件,逻辑与 && 的优先级高于 逻辑或 ||
      bool ret = ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z';
      
      // 小括号优化优先级或者整体条件认知,可有可无!
      bool ret = (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');
      
  • 数值判断

    • 闰年条件

      • 可以被 4 整除,但是不能被 100 整除

        year % 4 == 0; // 表示可以被 4 整除
        year % 100 != 0; // 表示不可以被 100 整除
        
      • 或者可以被 400 整除

        year % 400 == 0; // 表示可以被 400 整除
        
        year % 4 == 0 && year % 100 != 0 || year % 400 == 0
        
2. 分支
2.1 概述

主要处理代码需要进行条件执行的程序,简单的来说满足条件执行,不满足条件不执行!主要有if分支结构,Switch case

2.2 if 分支
// 格式
if(/*条件判断,要求提供数据为bool类型 0 or 1*/)
{
   // if 满足条件执行目标语句内容
}
/*
执行流程:
    程序执行到if分支结构,首先判断if之后小括号的数据内容是否为true/ 非0, 执行大括号中的代码内容,如果为false/0大括号中的代码内容不在执行*/
#include <iostream>

using namespace std;

int main (int argc , char * [])
{
    int money = - 100000000;
    
    if(money = 5 )
    {
        cout << "购买法拉利endl;
    }
    
    cout << "购买成功"<< endl;
    
    return 0 ;
}
2.3 if else 分支
if (/*条件判断  要求bool类型 0 或 1 */)
{
   //满足条件对应的代码模块内容
}
else
{
 //不满足条件对应的代码块内容
}
/*
执行流程:
   程序直行到 if else 结构,首先判断if 之后的小括号中的条件判断是否为true,如果为true执行if 之后大括号的代码内容,如果为flase,执行else
*/
#include <iostream>

using namespace std;

int main(int argc , char * argv [])
{
 int money = 10 ;
 
 if(money > 50)
 {
     cout << "鸡排" << endl;
 }
 else
 {
     cout << "板烧鸡腿堡" << endl;
 }
     cout << " 晚餐" << endl;
}
2.4 if else if 分支
//格式
if(/*条件匹配一*/)
{
   // 满足条件一执行代码
}else if ( /* 条件匹配二*/)
{
  // 满足条件二执行代码
}
}else if ( /* 条件匹配三*/)
{
  // 满足条件三执行代码
}else
{

}
#include <iostream>

using namespace std;

int main ( int argc , char * argv [])
{
    int score = 89 ;
    
    if( 100 == score )
    {
        cout << "大型玩偶" << endl;
    }
    else if( 85 < score && score <=99 )
    {
        cout << "小型玩偶" << endl;
    }
    else if (60 < score && score <=85)
    {
        cout << "钥匙扣" << endl;
    }
    else
    {
     cout << "谢谢参与" << endl ;
    }

}
2.5 switch case 结构
//格式
switch (/* 变量*/)
{
  case 常量1:
        处理方式1;
        break
        case 常量2:
        处理方式2;
        break
        case 常量3:
        处理方式3;
        break
        case 常量4:
        处理方式4;
        break
}
#include <iostream >

using namespace std;

int main (int argc , char * argv [])
{
    cout << "烤肠" << endl;
    cout << "猪蹄" << endl;
    cout << "鸭腿" << endl;
    cout << "煲仔饭" << endl;
     int choose = 0 ;
     cin >> choose ;
    
     switch(choose)
     {
             case 1 ;
             cout << "7RNB" << endl;
             break;
             case 2 ;
             cout << "37RNB" << endl;
             break; 
             case 3 ;
             cout << "12RNB" << endl;
             break;
             case 4 ;
             cout << "14RNB" << endl;
             break; 
           
     }

}
  • 34
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值