初学C语言-3运算符和表达式

//2020年9月12日16:08:54
三.运算符和表达式
1.基本概念
1.1 运算符
1.1.1 运算符操作数的概念 :当前运算符需要几个数字运算
1.1.2 左值和右值
左值:变量
右值:一般没有要求
1.2 优先级和结合性的概念
1.2.1 优先级 算东西先后顺序
逗号 赋值 条件 位 算术 括号系列
此图为先后顺序,优先级从上到下依次递减

1.2.2 结合性 :读法: 从右往左 从左往右
一般就是赋值语句和位运算以及++和 - - 从右往左
2.基本运算符
2.1 赋值运算符

#include <stdio.h>
 int main()
 {
     int a=1;
     int result=a;
     //错误,Num一定是要存在的东西
     //int inumber=Num=1;
     //赋值语句的准则: 运算符两边的类型要一致 ,以左边为标准
     int iNum=1.11;          
     //“=”:“int *”与“int (*)[3]”的间接级别不同
     return 0;
 }

2.2 算术运算符

 #include <stdio.h>
 int main() 
 {
     int a = 1, b = 2;
     int result = a * b;
     //注意点,不存在省略的写法
     //错误代码: a(a+b)
     //result = a(a + b);
     //除法/
      result = a / b;
     //注意点: 自动取整问题
     //1/2+1/3+1/4
     printf("result=%.3f\n", 1 / 2.0 + 1 / 3.0 + 1 / 4.0);
     //取余  %
     int num = 123;
     int num1 = num % 10;   //num1=123%10 =3
     num=num/10;            //num=123/10=12
     int num2 = num % 10;
     num = num / 10;
     int num3 = num % 10;
     printf("%d,%d,%d\n", num1, num2, num3);
     //正负问题
     printf("%d\n", -2 % 3);
     printf("%d\n", 2 % -3);
     return 0;
 }
2.3 复合赋值运算符
 #include <stdio.h>
 int main()
 {
     int a=1;
     a+=1;               //解释为a=a+1 
     a/=1;               //解释为a=a/1
     a*=2;               //解释为a=a*2
     //注意点
     int b=2;
     int result=3;
     result*=a+b;
     
     return 0;
 }
3.条件和逻辑运算符
3.1 条件表达式和逻辑表达式的值只有两个:01
3.2 01 表示含义 是:成立和不成立或者是真和假
3.3 计算机中真和假 : 所有非零值都是真 只有0或者NULL 才是假的
3.4 条件表达式
 #include <stdio.h>
 int main()
 {
     //>  <
     printf("%d\n",1>2);     //打印结果是0
     //== !=  >=  <=
     //注意点:1.不要把等于号写成赋值语句
     //      2.!=中间没有空格
     //      3. 不存在连续操作
     printf("%d\n"1==1);
     printf("%d\n",2<1<4);  //2<1只有两个值[0,1] 永远都是小于4
     //怎么去写条件
     return 0;
 }
3.5 逻辑运算符
3.5.1 逻辑运算符: && 并且 || 或者 !: 取反(否定) 真变 假,假变真
表达式1&&表达式2 只有当表达式12都成立(真的) ,整个才是真的,其他情况都是假的
表达式1||表达式2 只有当表达式12都不成立(假的) ,整个才是假的,其他情况都是真的
 
 #include <stdio.h>
 int main()
 {
     //并且
     printf("%d\n", 1 && 1);
     printf("%d\n", 1 && 0);
     printf("%d\n", 0 && 1);
     printf("%d\n", 0 && 0);
     int a = 3;
     printf("%d\n", a > 1 && a < 4);  //等效数学中:1<a<4
     //或者
     printf("%d\n", 1 || 1);
     printf("%d\n", 1 || 0);
     printf("%d\n", 0 || 1);
     printf("%d\n", 0 || 0);
     printf("%d\n", a > 1 || a < 4);
     //取反: 真的变假 ,假的变真
     //计算机中非零值表示真
     printf("!-3=%d\n", !-3);                //逻辑取反
     //注意点:
     return 0;
 }

3.5.2 短路现象:计算偷懒
0&&x 表达式第一部分是0 那么 整个表达式的值就是0 所以计算机不会去走x
1||x 表达式第一部分是1那么 整个表达式的值就是1 所以计算机不会去走x

#include <stdio.h>
 int main()
 {
     int x = 3;
     int y = 2;
     int result = x > 1 || (y = 3);
     printf("result=%d\tx=%d\ty=%d\n", result, x, y);
     result = x < 1 && (y = 10);
     printf("result=%d\tx=%d\ty=%d\n", result, x, y);
     return 0;
 }
 

4.特殊运算符
4.1 三目运算符
表达式1?表达式2:表达式3
整个表达式: 表达式1是真的 取表达式2的值 反之 取表达式3的值

 #include <stdio.h>
 int main()
 {
     int result = 1 > 2 ? 1 : 2;
     printf("%d", result);
     //求最大值
     int a = 2, b = 3;
     int max = a > b ? a : b;
     return 0;
 }

4.2 逗号运算符: 取逗号表达式的最后一部分

#include <stdio.h>
 int main()
 {
     int result = 1 > 2 ? 1 : 2;
     printf("%d\n", result);
     //求最大值
     int a = 2, b = 3;
     int max = a > b ? a : b;
     printf("%d\n", (1, 2, 3, 4, 5, 6, 7));
     //优先级 逗号是最低
     a = 1, 2, 3, 4, 5, 6, 7;
     printf("%d\n", a);
     a = (1, 2, 3, 4, 5, 6, 7);
     printf("%d\n", a);
     return 0;
 }
4.3 自增自减运算符
4.3.1 基本操作
++: a++ 解释 a=a+1
––: a–– 解释为a=a-1
4.3.2 前置和后置的理解
前置: ++a 先做自增,先改变自己,在去用自己
后置: a++ 先用自己 ,再改变自己
 #include <stdio.h>
 int main()
 {
     a = 0;
     result = 0;
     result = ++a;
     printf("result:%d\ta:%d\n", result, a);
     a = 0;
     result = 0;
     result = a++;
     printf("result:%d\ta:%d\n", result, a);
     return 0;
 }

4.4 sizeof运算符
用法: sizeof(类型/变量): 当前变量 或者类型所占用字节数
注意点: 是在编译器完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值