03day(控制流、运算符)

一、控制流

循环语句:forwhiledo-while
分支语句: switch,if-else if-else if-else
跳转语句: goto 
  • 循环语句
  • while:循环
while(判断表达式) --》注意:()后面不能加分号
    {
     //代码块1
    }
    ....//代码块2
判断表达式:其实就是一些值比较的结果 如3>5 
判断表达式为真,则执行代码1
判断表达式为假,则执行代码2
C语言--》非0即真  1() 2(真) 1000(真) -21(真) 0(假)
bool类型的值--true 值为1  false 值为0 
  • do-while:循环
do --》先执行一次循环再判断表达式
{
     //代码块1
}while(判断表达);  --》注意:()后面一定要加分号
    ....//代码块2

判断表达式为真,则执行代码1
判断表达式为假,则执行代码2

C语言非0即真  1() 2(真) 1000(真) -21(真) 0(假)

注意:while与do-while循环区别是什么

do-while循环内代码至少执行一遍
  • for:循环
for(赋值表达式; 判断表达式;  变量变化表达式)
    {
        ...//代码块1
    }
    ...//代码块2
 
 for代码先执行顺序:
赋值表达式(只执行一次)
判断表达式,若成立(判断结果为真),则执行代码块1 ,否则执行代码块2
判断结果为真,才有第三步:变量变化表达式
判断表达式,若成立(判断结果为真),则执行代码块1 ,否则执行代码块2
判断结果为真,才有第五步:变量变化表达式
注意:    
三个表达式之间要以;隔开 
  • for扩展写法
写法一: for(; ; )==>while(1)    
写法二: for( ;i<5; i++) 使用,for循环之前的变量赋值
  • 分支语句
  • if-else:选择控制流
if(判断表达式)
    {
     ...//代码块1
    }
    else
    {
     ...//代码块2
    }
    
判断表达式为真,则执行代码1
判断表达式为假,则执行代码2
    
两个代码块当中只能执行其中一个
    
非0即真  1() 2(真) 16546(真) -21(真) 0(假)
模型一:这种模型,只要满足条件都会执行相关语句
if(判断表达式)
    {
     ...
    }
    if(判断表达式2)
    {
     ...
    }
    if(判断表达式3)
    {
     ...
    }
    ...
 
模型二:这种模型,它是从上往下进行判断,当满足其中一个时,后面的则不考虑执行
if(判断表达式)
    {
     ... 
    }
    else if(判断表达式2)
    {
     ...
    }
    else if(判断表达式3)
    {
     ...
    }
    else
    ...
  • switch-case:选择控制流
switch(变量)--》变量:整型变量、字符变量、枚举变量
    {
     case 变量值:
        代码块1;
        break;
     
     case 变量值:
        代码块2;
            break;    

        
          default:
          printf("输入有误");
       代码块n;
       break;

    }
  • 跳转语句
goto:跳转语句
模型1(可用,处理错误信息后退出程序)

    。。。。//代码块
    
goto 标签;
    
    。。。。//代码块

标签:

- 区别:

break:一般用于循环体或者switch-case;
用于循环体作用:跳出包含自己循环体,用于switch-case,跳出switch-case
continue:用于循环体内,作用:跳过continue后面代码块
return:在函数当中用于返回函数值,或者结束该函数。

二、运算符

  • 算术运算符
算术运算符:+    -    *    /    %    ++    --   
解析
 +    :加法       num = a+b; num = a+5; num = 25+12;
 +    :减法       num = a-b; num = a-5; num = 25-12;
 +    :乘法       num = a*b; num = a*5; num = 25*12;
/    :取整(商)      num = a/b; num = a/5; num = 2/5;
%    :取余(余)      num = a%b; num = a%5; num = 2%5;num = 12%5;     
++    :自加     运算遵守最近原则(指的是最左边,如果是变量,先赋值再加;若是加
号,先加,再赋值)
    
--      :自减    运算遵守最近原则(指的是最左边,如果是变量,先赋值再加;若是加
号,先加,再赋值)  
  • 逻辑运算符
逻辑运算符:!&&    ||  

解析

  • !:逻辑非
 if(!判断表达式)
    {
    。。。//代码块 
    }
判断表达式为假,运行代码块
判断表达式为真,不运行代码块
  • &&:逻辑与
    if(判断表达式1  && 判断表达式2)
    {
        。。。//代码块 
    }
两个判断表达式1与判断表达式2都为真时,才能运行代码块
  • ||:逻辑或
 if(判断表达式1  || 判断表达式2)
    {
    。。。//代码块 
    }
两个判断表达式1与判断表达式2中的一个为真时,才能运行代码块
  • 关系运算符
关系运算符:>     >=     <     <=     ==     !=  

解析

>    :大于        a > b
>=      :大于等于    a >= b    
<    :小于        a < b
<=    :小于等于    a <= b
==      :等于        a == b        if(a == b)
!=    :不等于          a != b 

>= <= == !=这些运算符是不能分开的  
在数学当中        a < b < c
在代码如何表达    (a < b) && (b < c)
  • 复合运算符
复合运算符:+=     -=     *=     /=    %=    >>=    <<=    &=    ^=
a %= b  ==  a = a%b   i++ -->i=i +1
a ^= b == a = a ^ b
1byte = 8bit  1111 1111 -->
解析
+=:   num += i; ==> num = num+i;
-=:   num -= i; ==> num = num-i;
*=    /=     %=    >>=    <<=    &=    ^= 
a ^= b; ==>a = a^b;
注意:复合运算符是不能分开写
  • 位运算
位运算:&     |     ~     ^     >>(右移)      <<(左移)--》stm32
&: 位与
技巧:两位为1,结果为1;只有一位为0,结果为0
  • 例子
0x12 & 0x47
0x12: 0001 0010
      &
0x47: 0100 0111
结果:0000 0010 ==>0x02==>2
  • | :位或
技巧:两位只要有一位为1,结果为1
  • 例子:
0x12 & 0x47
0x12: 0001  0010
      |
0x47: 0100  0111
结果:0101  0111 ==>0x57
  • ~ :位取反
按位取反 ~1 = 0 ; ~0 = 1;
例子:
0x12
二进制:0001 0010
 ~:    1110 1101--> 0xed
^    :异或
概念:两位相同为0,不同为1
  • 其它运算符
逗号,--》 顺序运算符,从左到右
例子:
int a=5, b=6, c=10;
int b = 6 ;
int c = 10;
=  --》赋值运算
例子:
int b = 10; //把10赋值给b变量空间 ;将10赋值给变量b
三目运算符 (常用)
判断表达式? 运行结果1:运行结果2
判断表达式为真时,结果为:运行结果1
判断表达式为假时,结果为:运行结果2
int a = 2 ;
int b = 4 ;
int c = if((a-b) > 5 )? a : b
(a+b)> 5:判断表达式
a:运行结果1 -->2
b:运行结果2 --> 4
例子:
int a = 10, b = 5, c = 3, ret;
ret = (a>b && b>c) ?  a+b : c>b;
(a>b && b>c)为真,结果:a+b = 15
故ret = 15
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值