C基础-04(运算符、if语句、switch-case结构)

(内容为学习笔记,如有错误,还望指正,如有遗漏,还望补充)

1. 运算符

1)条件运算符

        结构为 表达式操作数1操作数2 ,其中'?'前的表达式的结果决定了这个运算符的返回值,表达式为真,返回操作数1,反之则返回操作数2。如下所示,a>b为真,输出c的值就为a,即10。

 int main()
{
    int a = 10,b = 1,c = 0;
    c = a>b?a:b;  
    printf("%d\n",c);  //输出10,条件运算符中a>b为真,返回a的值赋值给c
    return 0;
}

        条件运算符的优点非常明显,简单明了地判断表达式的真假并反馈值,不用写if语句进行判断,如下代码。

if(a > b) printf("%d\n",a);
else printf("%d\n",b);
//上下两式就结果来看是没有区别的
printf("%d\n",a>b?a:b);

2)sizeof()运算符

作用: 求变量或者类型占内存空间的大小

操作对象: 变量名、 类型名

运算结果:整数

        内存的大小以字节(byte)为单位,以下是内存单位的关系。其中1位二进制位占用1比特单位,即1bit。举例char类型,即字符型变量,其占用内存位1byte,也就是8bit,如字母a,其asiic码为97,在内存中二进制为0110 0001,占用8个二进制位,1byte。

                1byte ==8bit(8个二进制位)

                1kb == 1024byte

                1mb ==1024kb

                1gb ==1024mb

                1tb ==1024gb

以下是各种常用变量类型占用内存的大小,单位byte

        字符型  char  1

        短整型  short  2

        整形  int  4

        单精度浮点型  float  4

        长整型  long  4

        指针类型   4/8  (32位系统中为4,64位系统中位8)

        双精度浮点型  double  8

        长双精度浮点型  long double  8

3)自增自减运算符

++--,两者都需要分表达式前和表达式后的用法,以下举例说明。自增自减在变量后时,先进行其他操作,再对变量进行增减操作,自增自减在变量前时,先增减在进行其他操作。

//b=6
printf("%d\n",b++);    //输出6,此时b为7
printf("%d\n",b--);    //输出7,此时b为6
printf("%d\n",++b);    //输出7,此时b为7
printf("%d\n",--b);    //输出6,此时b为6

4)赋值运算符

=

5)运算符优先级

6)逗号运算符

#include <stdio.h>  
int main() 
{	 
    int a = (1,2,3,4,5,6,7,8,9);//(1,2,3,4,5,6,7,8,9)是一个逗号表达式,因为逗号的优先级最低,比赋值运算符更低,所有将逗号表达式用()包含。 
    printf("%d\n", a);//9 
    return 0; 
}

2.if语句

1)if(判断条件){函数体}

        条件判断为真时,执行后方函数体,如下。

//a=10,b=7
if(a > b)
{
    printf("%d\n",a);
}//执行输出a的值10

 2)if嵌套

        if判断为真后执行的函数体中也同样可以包含if,如下,使用时需要注意判断条件中的变量可能在运行过程中发生变化。

//a=10,b=7,c=5
if(a > b)
{
    if(b > c)
    {
        printf("%d\n",c);
    }
}//输出c的值5

 3)if-else分支选择结构

        举例说明如下,非常经典的根据分数判定评级,使用if-else分支选择结构来判断划分,if后的else表示在if判断为假之后需要执行的语句,当然在else后同样可以接if判断语句。

if(a < 0 || a >100) printf("error\n");//范围外的分数报错
else if(a < 60) printf("E \n");
else if(a < 70) printf("D \n");
else if(a < 80) printf("C \n");
else if(a < 90) printf("B \n");
else printf("A \n");

3.switch-case结构

        switch-case结构是非常经典的分支选择结构,表达式是判断的对象,case后的值则是表达式可能存在的值,以及出现这个值之后需要执行的操作。

        注意case的执行语句后没有break的话,会一直往下执行下方所有case的执行语句直到执行完所有语句或遇到break为止。

switch ( 表达式 )//表达式的运算结果必须是整数  char  short  int都可以 
{//{}结构部分 
case 值1://case后面的值必须是整型常量或者字符型常量,这个值是上面表达式可能产生的一个结果 
        //注意case后面是  : 
        //case的作用,当表达式的运行结果匹配到case后面的常量时,会从这个case的位置开始执行代码 
        //case可以写无数个,不能有值相同的case 
        //可以理解为:case就是switch结构中代码执行的起点! 
    语句1;  
case 值2:  
    语句2;  
    break;//使用break可以中断执行
default://default当表达式的结果没有匹配到任何case的值时,从default开始执行代码,default可以根据实			//际的逻辑需求省略。 
    语句3;  
}

 小知识: 

1)sizeof()求出的字符串长度包含'\0'

2)尝试理解“a+++b+++c++”,其含义是(a++)+(b++)+(c++),若a,b,c分别为1,2,3,则式子运算结果为1+2+3=6,a,b,c的值各自增1为2,3,4。自增自减需要注意其结果和对变量本身值的改变

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值