目录
你是否觉得C语言中的操作符就像一个与你相距万里的陌生人,对它感觉很陌生,不太会使用
下面就来讲讲如何让你和它做好朋友
一、算数操作符
1.加法操作符+
int a=2+3//右边的2和3相加后赋值给整形变量a,所以a的值为5
2.减法操作符-
int a=3-2//右边的3和2相减后赋值给整型变量a,所以a的值为1
3.乘法操作符*
int a=2*3//右边的3和2相乘后赋值给整型变量a,所以a的值为6
4.除法操作符/
int a=7/3//右边7除以3 商2余1,将商赋值给整型变量a,所以a的值为2
5.求余操作符%
int a=7%3//右边7模3 商2余1,将余数赋值给整型变量a,所以a的值为1
二、移位操作符
1.左移操作符<<
以该数字的补码向左移动相应的位数,高位舍弃,低位补0,其结果相当于乘于2的n次方,n为左移的位数
2.右移操作符>>
以该数字的补码向右移动相应的位数
如果是带有符号位进行移位,低位舍弃,在其高位补充原符号位,即正数补0,负数补1
如果是没带符号位进行移位,低位舍弃,在其高位补0,相当于除以2的n次方
三、位操作符
#include<stdio.h>
int main()
{
int a = 7;
int b = 11;
printf("a&b=%d\n",a&b);
printf("a|b=%d\n",a|b);
printf("a^b=%d\n",a^b);
return 0;
}
运行结果如下:
a&b=3
a|b=15
a^b=12
将a和b转化成二进制,对齐a和b的位数后再进行比较
1.按位与&
相同的位数两者都为1则按位与才为1,否则为0
2.按位或|
相同的位数两者之中只要有一者为1则按位或才为1,否则为0
3.按位异或^
相同的位数两者之中只要数字不同则按位异或才为1,两者数字相同则为0
最后再将按位与后的二进制结果转化为十进制
四、赋值操作符
1.=
例如:
定义一个整型变量a对其赋值5
int a=5;
2.+=,-=,*=,/=,&=,|=,^=
例如:
a+=7;相当于a=a+7;
a<<=2;相当于a=a<<2;
其他的赋值操作符都一样
五、单目操作符
1.!
该操作符为逻辑反操作符,能够将非0值转化为0,将0转化为1,即真变假,假变真
#include<stdio.h>
int main()
{
int flag=0;
while(!flag)//!flag为1,1为真,进入循环
{
printf("Hello\n");
break;
}
return 0;
}
2.~
按位取反操作符能够将二进制的数字1变成0,0变成1,符号位也会改变
3.++,--
前置++:先++,后使用.
#include<stdio.h>
int main()
{
int a=10;
int b=++a;
printf("a=%d b=%d\n",a,b);//a=11 b=11
return 0;
}
后置++:先使用,后++.
#include<stdio.h>
int main()
{
int a=10;
int b=a++;
printf("a=%d b=%d\n",a,b);//a=11 b=10
return 0;
}
--和++一样的用法
4.sizeof也是一个操作符,并不是函数,用来计算操作数的类型长度(单位:字节)
#include<stdio.h>
int main()
{
printf("%d\n", sizeof(int));//4个字节
printf("%d\n", sizeof(short));//2个字节
printf("%d\n", sizeof(long));//4个字节
printf("%d\n", sizeof(long long));//8个字节
printf("%d\n", sizeof(float));//4个字节
printf("%d\n", sizeof(double));//8个字节
return 0;
}
5.(类型)为强制类型转换操作符
有的浮点型数据用%d打印十进制的数字就会丢失数据,就要将浮点型数据强制转换成整型数据
6.&和*
&为取地址操作符,在进行输入数据的时候就要加上,有了地址才能将数据通过键盘输入进去,如果操作数p的类型为M,则表达式&p为指向M类型的指针
*为解引用操作符,也叫取值操作符,它的操作数必须为指针,如果p为指针,则*p为p指向的对象或函数,当是指向对象时,*p即为左值
如果p为一个整形变量,例如:int p=2;则*&p相当于p,&*p却是非法的,因为*p相当于取了一个内存地址为2的值
7.正值+,负值-
int a=10;
int b=-a;
b就等于-10
六、关系操作符
>,>=,<,<=,==,!=
可以用来比较大小和判断条件是否成立
例如&#x