【手撕C语言基础】运算符(1)

  • (꒪ꇴ꒪ ),hello我是祐言
  • 博客主页:C语言基础,Linux基础,软件配置领域博主🌍
  • 快上🚘,一起学习!
  • 送给读者的一句鸡汤🤔:
  • 集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏

        C语言运算符号指的是运算符号,C语言中的符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符,接下来我们就来介绍和实现一下他们。

1.基本算数运算符(+ - * / ++ --)

+加法运算符或正号运算符
-减法运算符或负号运算符
*乘法运算符(键盘无乘号所以用*代替)
/除法运算符(键盘无除号所以用/代替)
++自增运算符
--自减运算符

(1)加法举例

#include <stdio.h>
int main()
{
  int a = 1;
  int b = 2;
  int c ;
      c = a + b;
      printf("%d\n",c);
  return 0;
}

(2)减法举例

#include <stdio.h>

int main()
{
  int a = 5;
  int b = 2;
  int c ;
    c = a - b;
    printf("%d\n",c);
 return 0;
}

 (3)  乘法举例

    c = a * b;

(4)除法举例 

   c = a / b;

        补充求余(%)运算符,5除以2求余数为1

  int a = 5;
  int b = 2;
  int c ;
    c = a % b;
    printf("%d\n",c);

 (5)自增++/自减--举例

        ++i,--i:他们的意思是在使用i之前线使用i的值加或减1,而i++与i--则是在使用i之后,再使i的值加或减1,比较绕口,用代码实现一下就可以很快理解。

#include <stdio.h>

int main()
{
  int a = 5;
  
    printf("%d\n",++a);
 return 0;
}

#include <stdio.h>

int main()
{
  int a = 5;
    printf("%d\n",a++);
 return 0;
}

         减法亦然,这里不做过多演示啦。

2.关系运算符

>左操作数的值是否大于右操作数的值,如果是则条件为真
<左操作数的值是否小于右操作数的值,如果是则条件为真
==两个操作数的值是否相等,如果相等则条件为真
>=左操作数的值是否大于或等于右操作数的值,如果是则条件为真
<=左操作数的值是否小于或等于右操作数的值,如果是则条件为真
!=两个操作数的值是否相等,如果不相等则条件为真

        举个简单的例子:

#include <stdio.h>

int main()
{
  int a = 5;
  int b = 3;
  int c = 3;
    printf("%d \n",a<b);
    printf("%d \n",a>b);
    printf("%d \n",a!=c);
 return 0;
}

        这里的0就是false,为假,而1就是true,为真。

3.逻辑运算符

逻辑非运算符,如果条件为true,则逻辑非运算符将得到false
&&如果两个操作都为真,则条件为真
||如果两个操作任意一个非零,则条件为真

#include <stdio.h>

int main()
{
  int a = 1;
    printf("%d \n",!a);
 return 0;
}

4.位运算符(二进制)

>>右移位操作符
<<左移位操作符
&按位与(一假则假)
|按位或(一真则真)
1&?=? ,0&?=0
1|?=1 , 0|?=?
1^?=~? ,0^?=?

        所谓二进制位运算符,就是以二进制位来进行操作,例如整数2的二进制为0010,如果2>>1则新的二进制为0001,就是整数1,下面用代码实现如下:

#include <stdio.h>
int main()
{
  int a = 2;
    printf("%d \n",a>>1);
 return 0;
}

        如上所示得到了我们预期的结果1。 

        那么如果2<<1是什么呢,应该是0100这是整数4的二进制

    printf("%d \n",a<<1);

        按位与就是在二进制的基础上逐列进行与运算,例如整数2的二进制表示为0010,整数1的二进制表示为0001,按列与之后得到0000,因此输出结果为0,用代码验证一下:

#include <stdio.h>
int main()
{
  int a = 2;
  int b = 1;
    printf("%d \n",a&b);
 return 0;
}

         可以看到4是上一步演示的结果,新的结果为0,说明验证成功。

5.复合运算符

        在C语言中,复合运算符(Compound Assignment Operators)是一类特殊的运算符,用于将算术运算符和赋值操作结合在一起,以简化代码并使其更加高效。复合运算符的一般形式为操作符=,例如+=-=*=/=等。

常见的复合运算符及其作用如下:

  1. +=:加等于,将右边的值加到左边的变量,并将结果赋值给左边的变量。例如:a += b;等同于a = a + b;

  2. -=:减等于,将右边的值从左边的变量中减去,并将结果赋值给左边的变量。例如:a -= b;等同于a = a - b;

  3. *=:乘等于,将左边的变量乘以右边的值,并将结果赋值给左边的变量。例如:a *= b;等同于a = a * b;

  4. /=:除等于,将左边的变量除以右边的值,并将结果赋值给左边的变量。例如:a /= b;等同于a = a / b;

  5. %=:取模等于,将左边的变量除以右边的值得到余数,并将结果赋值给左边的变量。例如:a %= b;等同于a = a % b;

  6. <<=:左移等于,将左边的变量向左移动右边的位数,并将结果赋值给左边的变量。例如:a <<= b;等同于a = a << b;

  7. >>=:右移等于,将左边的变量向右移动右边的位数,并将结果赋值给左边的变量。例如:a >>= b;等同于a = a >> b;

  8. &=:按位与等于,将左边的变量与右边的值进行按位与操作,并将结果赋值给左边的变量。例如:a &= b;等同于a = a & b;

  9. |=:按位或等于,将左边的变量与右边的值进行按位或操作,并将结果赋值给左边的变量。例如:a |= b;等同于a = a | b;

  10. ^=:按位异或等于,将左边的变量与右边的值进行按位异或操作,并将结果赋值给左边的变量。例如:a ^= b;等同于a = a ^ b;

        复合运算符在C语言中是常用且实用的功能,可以有效地简化代码,并提高代码的可读性和效率。使用复合运算符可以让代码更加简洁,并减少重复的赋值操作。

        今天的分享就到这里了,后续更新其他!

        更多C语言相关文章,关注专栏:

手撕C语言

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉感谢关注🎉
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C语言中,没有内置的ArrayList数据结构,但是我们可以通过使用指针和动态内存分配来实现类似ArrayList的功能。 下面是一个简单的示例代码,展示了如何在C语言中创建一个类似ArrayList的数据结构: ```c #include <stdio.h> #include <stdlib.h> typedef struct { int* data; // 存储数据的数组 int size; // 当前存储的元素个数 int capacity; // 数组的容量 } ArrayList; // 初始化ArrayList void init(ArrayList* list) { list->data = NULL; list->size = 0; list->capacity = 0; } // 向ArrayList中添加元素 void add(ArrayList* list, int element) { if (list->size == list->capacity) { // 如果数组已满,则扩展数组的容量 int newCapacity = (list->capacity == 0) ? 1 : list->capacity * 2; int* newData = (int*)realloc(list->data, newCapacity * sizeof(int)); if (newData == NULL) { printf("内存分配失败\n"); return; } list->data = newData; list->capacity = newCapacity; } list->data[list->size] = element; list->size++; } // 获取ArrayList中指定索引的元素 int get(ArrayList* list, int index) { if (index < 0 || index >= list->size) { printf("索引越界\n"); return -1; } return list->data[index]; } // 释放ArrayList占用的内存 void freeArrayList(ArrayList* list) { free(list->data); list->data = NULL; list->size = 0; list->capacity = 0; } int main() { ArrayList list; init(&list); add(&list, 10); add(&list, 20); add(&list, 30); printf("元素个数:%d\n", list.size); printf("第一个元素:%d\n", get(&list, 0)); printf("第二个元素:%d\n", get(&list, 1)); printf("第三个元素:%d\n", get(&list, 2)); freeArrayList(&list); return 0; } ``` 这段代码演示了如何使用指针和动态内存分配来创建一个类似ArrayList的数据结构。你可以通过调用`add`函数向ArrayList中添加元素,通过调用`get`函数获取指定索引的元素。在使用完ArrayList后,记得调用`freeArrayList`函数释放占用的内存。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祐言QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值