C语言运算符和条件结构if和switch-case

运算符与表达式

运算符

赋值运算符、算术运算符、关系运算符、逻辑运算符

表达式

符号与操作数的组合

例如:a = (b + 3) + (b -1)

赋值运算符

单等号 =

计算顺序:从右往左

#include <stdio.h>
int main()
{
    //符合赋值运算符示例
    int num = 5;
    x += 10; //等价 x = x + 10;
    printf("%d\n",x);
    x -= 10; //等价 x = x - 10;
    printf("%d\n",x);
    x *= 10; //等价 x = x * 10;
    printf("%d\n",x);
    x /= 10; //等价 x = x / 10;
    printf("%d\n",x);
    x %= 10; //等价 x = x % 10;
    printf("%d\n",x);
    return 0;
}

算术运算符

算术运算符可以进行算术运算

一元运算符:++、--  ()

#include <stdio.h>
void main() 
{
	int num = 5;
	int result = num++;      //后置
	printf("result = %d\n",result);
}
//结果为5
#include <stdio.h>
void main() 
{
	int num = 5;
	int result = num;      //先赋值给了result
	num++;                 //再++  就是num加了一个1
	printf("result = %d\nnum++ = %d\n",result,num++);
}
//结果为 5  6

注意:代码段一等价于代码段二的写法,这就是为啥result = num++ 的结果为5,而不是6

二元运算符:+、-、*、/、%

#include <stdio.h>
int main() 
{
	//定义两个整型变量 
	int num1 = 5,num2 =2;
	//4个double型变量用来存放计算结果
	double result1,result2,result3,result4;
	result1 = num1 / num2; //除法
	result2 = num1 % num2; //取模 
	result3 = num1++;      //后置
	result4 = --num2;      //前置
	printf("num1 / num2 = %.2lf\n",result1);
	printf("num1 %% num2 = %.2lf\n",result2);
	printf("num1++ = %.2lf\n",result3);
	printf("--num2 = %.2lf\n",result4);
	return 0;
}

关系运算符

关系运算符可以比较大小、高低、长短

  • >、<
  • >=、<=
  • ==、!=

 注意:C语言中,0表示假,1(非零)表示真

逻辑运算符

运算符表达式说明
&& 并且条件1 && 条件2两个条件同时为真时,结果为真
|| 或条件1 || 条件2两个条件有一个为真时,结果为真
! 条件                  条件为真时,结果为假                   条件为假时,结果为真

位运算符(选学)

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

sizeof运算符

使用sizeof运算符可以获得数据类型占用内存空间的大小

基本用法:sizeof(type name)

结果以字节为单位

#include <stdio.h>
void main() 
{
	printf("int类型占用内存空间:%d\n",sizeof(int)); 
	printf("long类型占用内存空间:%d\n",sizeof(long));
	printf("float类型占用内存空间:%d\n",sizeof(float));
	printf("double类型占用内存空间:%d\n",sizeof(double));
	printf("char类型占用内存空间:%d\n",sizeof(char));
}

运算符优先级

运行结果是什么

#include <stdio.h>
void main() 
{
	printf("%d\n",!((18+45%3*5)>16)); 
}
//结果 0

记忆技巧

  1. 单目运算符号包括 ! ~ ++ -- sizeof,优先级别高
  2. 优先级别最低的是赋值运算符
  3. 可以通过()控制表达式的运算顺序,()优先级最高
  4. 从右往左结合性的只有赋值运算符、三目运算符和单目运算符
  5. 算术运算符 > 关系运算符 > 逻辑运算符
//级别从高到低排序
// () sizeof ++ --
// !
// 算术运算符
// 关系运算符
// &&
// ||
// 赋值运算符

条件结构

先判断后执行

#include <stdio.h>
void main() 
    if(条件为真)
    {
        //代码块1
    }
    else
    {
        //代码块2
    }

多重if结构

#include <stdio.h>
void main() 
    if(条件1)
    {
        //代码块1
    }
    else if(条件2)  //这里区分python里面的 elif
    {
        //代码块2
    }
    else
    {
        //代码块3
    }

switch结构

#include <stdio.h>
int main() 
    switch(表达式){
    case 常量1:
         语句1;
         break;
    case 常量2:
         语句2;
         break;
    ...
    default:
         语句;
    }

switch结构注意点

  • switch后的表达式只能是整型字符型
  • case后常量表达式的值不能相同
  • case后允许多条语句,不需要大括号
  • 如果不添加break语句,需要特别注意执行顺序,不管后面有没有case都会执行语句
  • case和default子句的先后顺序可以变动,但是default不放在最后时一定要加break
  • default子句可省略
#include <stdio.h>
int main() 
{
	//一般处理数轴中某几个点的情况
	//想知道某个月有多少天。逻辑:用户输入月份,根据月份判断当月天数
	int month; //用户输入月份数据类型与名称
	printf("请输入月份,我来判断天数:");
	scanf("%d",&month); 
	switch(month)
	{
	case 1:
		printf("一月31天\n");
		printf("一月完了就要过年了\n"); //可以执行多条语句 
		break;	
	case 2:
		printf("二月28天\n"); //这里没有判断闰年平年 
		break;	
	case 3:
		printf("一月31天\n");
		break;	
	case 4:
		printf("一月30天\n");
		break;
	default:
		printf("只判断1~4月份\n"); 			
	} 
	return 0;
}

switch和多重if对比

相同点

都是用来处理多分支条件的结构

不同点

switch:等值条件判断 — 条件是有限个的时候(杀鸡刀)

多重if:判断某个连续区间时的情况(杀牛刀)

 ❥(^_-) 我的学习之路任重道远,咱们下期见~~~ 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值