0
点赞
收藏
分享

微信扫一扫

C语言初阶-操作符

醉倾城1 2022-04-30 阅读 96

一.前言

大家好,今天将会讲到操作符的内容,学会后对你的c语言学习会有很大的帮助,学会后对你以后各种其他主流语言的学习也会有很大的帮助,为你的编程之路保驾护航,咱们废话不多说直接上干货,记得点赞收藏支持一下哦,这是你们对作者最大的支持和鼓励。

二.算术操作符

1.+

加号也就是数学里面的加号运算,可以是浮点型运算也可以是整型短整型以及长整型

int a=1,b=2;
c=a+b;
printf("%d",c);//输出3也就是1+2的结果

2.-

减号也就是数学里面的加号运算,可以是浮点型运算也可以是整型短整型以及长整型

int a=10;
int b=20;
int c=b-a;//c的值为10

3.*

乘号也就是数学运算里面的乘法符号

int a=2;
int b=3;
int c=a*b//这里的c的值为6

4./号

/号也就是数学中的÷运算

int a=2;
int b=6;
int c=b/a;//c的值为3

5.%号

%号也就是取余的符号可以理解为/号除不尽的部分所取的余数。

int a=2;
int b=3;
int c=b%a;//c的值为1
int d=a%b;//d的值为2

四.移位操作符和位操作符

1.移位操作符

一.左移位操作符

在内存中数据的存储是以二进制补码的形式进行存储比如整形数据1

在32位机器下内存中是存储为

00000000000000000000000000000001

当对数据进行左移<<2位时右边部分清零,左边部分补0,变为:

00000000000000000000000000000100

也就是乘了2的二次方。

二.右移操作符

右移操作符和左移操作符类似,只是左边右移部分补的是符号位而不是0,比如说1和-1

1:

00000000000000000000000000000001

 -1:在内存中存储的是补码

11111111111111111111111111111111

当二者右移两位时>>2 

00000000000000000000000000000000
11111111111111111111111111111111

1变为0,而-1还是-1,因为-1的符号位为1所以当右移时补的是1 

2.位操作符

一.&

按二进制取与

(二进制)任何数与0都为0,任何数与1都为他的本身。

比如说3&-5

00000000000000000000000000000011
               &
11111111111111111111111111111011
               =
00000000000000000000000000000011//3

最后的结果为3

二.|按二进制取或

1或上任何数都为1(二进制)

比如说3|-5

000000000000000000000000000000011
               |
111111111111111111111111111111011//-5的补码
              =
111111111111111111111111111111011//结果为-5的补码
//计算机存储的是补码,进行的也是补码运算

最后结果为-5;

三.^按二进制位取异或 

(二进制)相同的两个数异或为0,不同的两个数异或为1

比如说3^5

00000000000000000000000000000011
             ^
11111111111111111111111111111011
             =
11111111111111111111111111111000//-8的补码
//所以说最后结果为-8

四.代码示例 

 

最后的结果和我们计算的是相同的。 

五.赋值操作符

这里的=不再提及

主要分为+=,-+,/+,*=,%=

//递增
a=a+1;
//可以简写为:
a+=3;

//减法运算
b=b-2;
//可以简写为
b-=2;

//除法运算
c=c/2;
//可以简写为
c/=2;

//乘法运算
d=d*2;
//可以简写为
d*=2;

//取余运算
e=e%2;
//可以简写为
e%=2;

六.单目操作符

1.++单目操作符

可以分为前置++单目操作符和后置++单目操作符

二者的区别为前置++先运算完++在进行语句的运算

后置++先运算完语句在运算++

int a=1;
int b=a++;//b的值为1,a的值为2
------------------------------
int a=1;
int b=++a;//b的值为2,a的值为2

2.--单目操作符

可以分为前置--单目操作符和后置--单目操作符

二者的区别为前置--先运算完--在进行语句的运算

后置--先运算完语句在运算--

int a=1;
int b=a--;//b的值为1,a的值为0
------------------------------
int a=1;
int b=--a;//b的值为0,a的值为0

七.关系操作符

1.==

==意思为左右二者比较为相等的关系,最终的结果为bool型

2.>=

意思为左边小于等于右边的关系,最终的结果为bool型

3.<=

意思为左边大于等于右边的关系,最终的结果为bool型

4.!=

意思为左右二者比较为不相等的关系,最终的结果为bool型

八.逻辑操作符

1.逻辑与&&

&&两边为分别为1个表达式

表达式1&&表达式2
最终结果为bool型,两个表达式全为真结果才为真,否则结果为假

2.逻辑或||

||两边分别为1个表达式

表达式1||表达式2
二者表达式只要有一个为真则为真,如果两个表达式都为假,则最终中结果为假最终的结果也是bool型

九.条件操作符

符号:exp1 ? exp2 : exp3

三个语句组成,可由以下代码观察其作用

int a = 5;
int b = 9;
int max = (a>b) ? a : b;   //如果a>b,则max = a;否则max = b

十.逗号表达式

,号表达式的结果为最后一个语句的结果

int i = 0, j = 0;
for(i = 0,j = 0; i < 2, j < 4;i++, j++)   
{
   printf("good day!\n");
}
//由于for循环的循环次数只依赖于循环条件判断部分,而此部分又是一个逗号表达式,所以我们可以知道此次循环共打印good day! 4次。
 
 
 
int a = 1, b = 2;
int c = (a>b,a=b+10,a,a+1);    //结果为13
 
 
if(a = b + 1, c = a; d = 8)   //此时if语句的判断条件为d=8
//注意:逗号表达式的结果虽然是最后一个表达式的结果,但不可认为与前面的表达式就无关了,因为前面表达式可能会影响最后一个表达式的结果。

十一.下标引用丶函数调用和结构成员

1.[]为下标引用操作符

int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d",a[0]);//这里输出1,等价于*(a+0).

2.函数调用;

void add(int a,int b)
{
printf("%d",a+b)
}
int main()
{
int a=1,b=2;
add(a,b);//调用函数add输出3
return 0
}

3.结构成员

.为结构体变量.结构体成员

->为结构体指针->结构体成员

比如说

struct Person
{
  char name[10];
  char sex[5];
  int age;
  double height;
}
 
int main()
{
  struct Person person1;
  struct Person person2;
  struct Person *pperson = &person2;
  strcpy(person.name,"zhangsan");   //结构体成员访问
  person.age = 20;   //结构体成员访问
  strcpy(pperson->name,"lisi");   //结构体成员访问
  pperson->age = 23;   //结构体成员访问
}

今天就讲到这里,大家继续加油,创作不易,记得点赞呦!!手动比心。

 

 

 

 

举报

相关推荐

0 条评论