C语言基础:007 C基础语法 - 操作符

  1. 操作符分类

    算术操作符
    移位操作符
    位操作符
    赋值操作符
    单目操作符
    关系操作符
    逻辑操作符
    条件操作符
    逗号表达式
    下标引用、函数调用和结构成员
  2. 算法操作符

    1. +    
      -
      *    
      /
      %
    2. 内容解释
      1. 除了 % 操作符之外,其他的几个操作符可以作用于 整数和浮点数
      2. 对于 / 操作符如果 两个操作数都为整数 ,执行 整数除法 。而只要有 浮点数 执行的就是 浮点数除法
      3. % 操作符的 两个操作数必须 整数 。返回的是整除之后的 余数
  3. 移位操作符:移位操作符的操作数只能是整数

    1. 左移操作符 << 

      1. 移位规则:左边抛弃、右边补0
    2. 右移操作符 >> 

      1. 移位规则
        1. 逻辑移位
        左边用0填充,右边丢弃
        2. 算术移位
        左边用原该值的符号位填充,右边丢弃
      2. code示例
        #include <stdio.h>
        
        int main()
        {
        	int num = 10;
        	num = (num << 1); // 左移
        	printf("num = %d\n", num); // num = 20 
        
        	num = (num >> 1); // 右移
        	printf("num = %d\n", num); // num = 10 
        
        	num = -10;
        	num = (num >> 1); // 右移
        	printf("num = %d\n", num); // num = -5 
        	
        	return 0;
        }
  4. 位操作符

    & // 按位与
    | // 按位或
    ^ // 按位异或
  5. 赋值操作符 = 

    1. 复合赋值符
      +=
      -=
      *=
      /=
      %=
      >>=
      <<=
      &=
      |=
      ^=
    2. 代码示例

      赋值操作符可以连续使用,比如:
      int a = 10;
      int x = 0;
      int y = 20; a = x = y+1;//连续赋值
      
      // 那同样的语义,你看看:
      x = y+1; a = x;
      // 这样的写法是不是更加清晰爽朗而且易于调试。
  6. 单目操作符

    1. 单目操作符介绍

      1. 单目操作符
        !               逻辑反操作(C语言中,所有0为false, 所有非0为true)
        -               负值
        +               正值
        &              取地址
        sizeof        操作数的类型长度(以字节为单位)
        ~              对一个数的二进制按位取反
        --              前置、后置 --
        ++             前置、后置 ++
        *               间接访问操作符(解引用操作符)
        ( 类型 )       强制类型转换
    2. sizeof和数组

      1. code示例
        #include <stdio.h>
        
        void test1(int arr[])
        {   // 相当于是: int * arr;
        	printf("%d\n", sizeof(arr));//8
        }
        
        void test2(char ch[])
        {   // 相当于是: char * arr;
        	printf("%d\n", sizeof(ch));//8
        }
        
        int main()
        {
        	int arr[10] = { 0 };
        	char ch[10] = { 0 };
        	printf("%d\n", sizeof(arr));//40
        	printf("%d\n", sizeof(ch));//10
        	test1(arr); // 将指针传递给test1()
        	test2(ch); // 将指针传递给test2()
        	return 0;
        }
  7. 关系操作符

    >
    >=
    <
    <=
    !=   用于测试“不相等”
    ==       用于测试“相等”
  8. 逻辑操作符

    &&       逻辑与
    ||          逻辑或
  9. 条件操作符

    1. 三元运算符exp1 ? exp2 : exp3
  10. 逗号表达式

    1. 逗号表达式:exp1, exp2, exp3
    2. 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
  11. 下标引用、函数调用和结构成员

    1. [ ] 下标引用操作符
      1. ​​​​​​​操作数:一个数组名 + 一个索引值
      2. code示例
        int arr[10];//创建数组
        arr[9] = 10;//实用下标引用操作符。
        //  [ ]的两个操作数是arr和9。
    2. ( ) 函数调用操作符
      1. ​​​​​​​​​​​​​​接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
    3. 访问一个结构的成员
      1.  .      结构体 . 成员名
        ->     结构体指针 -> 成员名
      2. code示例
        #include <stdio.h>
        
        struct Stu
        {
        	char name[10];
        	int age;
        	char sex[5];
        	double score;
        };
        
        void set_age1(struct Stu stu)
        {
        	stu.age = 18;
        }
        
        void set_age2(struct Stu* pStu)
        {
        	pStu->age = 19; // 结构成员访问
        }
        
        int main()
        {
        	struct Stu stu;
        	struct Stu* pStu = &stu; // 结构成员访问
        
        	stu.age = 20;  // 结构成员访问
        	set_age1(stu);
        	printf("stu.age = %d\n", stu.age); // 20
        
        	pStu->age = 22; // 结构成员访问
        	set_age2(pStu);
        	printf("pStu->age = %d\n", pStu->age); // 19
        
        	return 0;
        }
  12. 表达式求值

    1. 隐式类型转换

      1. code示例
        #include <stdio.h>
        
        int main()
        {
        	//实例1
        	char a = 'a', b = 'b', c = 'c';
        	a = b + c; 
        	// b和c的值被提升为普通整型,然后再执行加法运算
        	// 加法运算完成之后,结果将被截断,然后再存储于a中
        	printf("%d\n", a); // -59
        
        	char f = 1;
        	printf("%u\n", sizeof(f)); // 1
        	printf("%u\n", sizeof(+f));// 4
        	printf("%u\n", sizeof(-f));// 4
        	// 实例2中的,c只要参与表达式运算,就会发生整形提升,表达式 +c ,就会发生提升,所以 sizeof(+c) 是4个字节.
        	// 表达式 -c 也会发生整形提升, 所以 sizeof(-c) 是4个字节, 但是 sizeof(c), 就是1个字节.
        
        	return 0;
        }
    2. 算术转换

      1. 如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算。
      2. code示例
        float f = 3.14;
        int num = f;//隐式转换,会有精度丢失
    3. 操作符的属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值