一.前言
大家好,今天将会讲到操作符的内容,学会后对你的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; //结构体成员访问
}
今天就讲到这里,大家继续加油,创作不易,记得点赞呦!!手动比心。