前言:C语言的运算符有以下几种,根据分类对象的不同可以分为单目运算符、双目运算符、三目运算符;根据运算作用的不同可以分为算数运算符、移位运算符、位操作符、赋值运算符、关系操作符、逻辑操作符、条件操作符、逗号表达式符、下标引用符、圆括号符、结构成员符等,并依次构成从上到下的优先级;C语言可以使用多种运算符进行数值运算、逻辑运算等操作;这些运算符是构建复杂程序所必需的基本组件,熟悉这些运算符及其使用方法可以帮助更好地理解C语言的运作方式,并快速开发出高效且可靠的程序。
单目运算符指这个运算符只对一个变量进行操作;双目运算符指两个操作数之间的运算符,它们用于在两个操作数之间执行一些运算;三目运算符指有3个操作数的运算符。
一.算数运算符
算数运算符包括加、减、乘、除、模运算;以下为运算的符号:
加法运算符:+
减法运算符:-
乘法运算符:*
除法运算符:/
取模运算符:%
自增运算符:++
自减运算符:--
算术运算符通常适用于数字类型的操作数
例如:
普通的算数运算操作
int A,B,C,D,E,F,G;
A=3;B=2;
C=A+B;
D=A-B;
E=A*B;
F=A/B;
G=A%B;
A++;
B--;
printf("A=%d\n",A);
printf("B=%d\n",B);
printf("C=%d\n",C);
printf("D=%d\n",D);
printf("E=%d\n",E);
printf("F=%d\n",F);
printf("G=%d\n",G);
输出结果为:
A=4
B=1
C=5
D=1
E=6
F=1
G=1
普通本身值运算操作
int A=3,B=2;
A=A+B;
A=A-B;
A=A*B;
A=A/B;
A=A%B;
普通本身值运算进行精简操作,同样适用于其他操作符
int A=3,B=2;
A+=B;
A-=B;
A*=B;
A/=B;
A%=B;
二.移位运算符
移位运算符包括左移、右移运算;以下为运算的符号:
左移运算符:<<
右移运算符:>>
移位运算符通常适用于数字类型字节的位进行移动的操作
例如:
对字节的位进行左移的操作,左移n位相当于剩余2的n次幂;对字节的位进行右移的操作,右移n位相当于除以2的n次幂
int A=180,B,C;
B=A<<1;
C=A>>1;
printf("B=%d\n",B);
printf("C=%d\n",C);
输出结果为:
B=360
C=90
三.位操作符
位操作符包括位与、或、异或、非运算;以下为运算的符号:
位与运算符:&
位或运算符:|
位异或运算符:^
位非运算符:~
位操作符通常适用于数字类型字节的位进行运算的操作
例如:
位操作符相当于两个字节的位相对应进行操作;当进行位与运算时,两个位1运算结果为1,一个位1与一个位0运算结果为0,两个位都为零运算结果为0;
当进行位或运算时,任何一个位为1运算结果为1,两个位都为零运算结果为0;
当进行位异或运算时,两个位1运算结果为0,一个位1与一个位0运算结果为1,两个位都为零运算结果为0;当进行位非运算时,位为1运算结果为0,位为0运算结果为1
int A=180,B,C;
B=A<<1;
C=A>>1;
printf("B=%d\n",B);
printf("C=%d\n",C);
输出结果为:
B=360
C=90
四.赋值运算符
赋值操作符是将某个值赋给某个指定的变量;以下为精简运算符组合:
+与=运算符赋值:+=
-与=运算符赋值:-=
*与=运算符赋值:*=
/与=运算符赋值:/=
%与=运算符赋值:%=
<<与=运算符赋值:<<=
>>与=运算符赋值:>>=
&与=运算符赋值:&=
^与=运算符赋值:^=
|与=运算符赋值:|=
例如:
普通赋值
int A=180,B,C;
B=30;
C=60;
精简赋值组合
int A=8,B=4;
A+=B;
printf("+=赋值给A的值为%d\n",A);
A-=B;
printf("-=赋值给A的值为%d\n",A);
A*=B;
printf("*=赋值给A的值为%d\n",A);
A/=B;
printf("/=赋值给A的值为%d\n",A);
A%=B;
printf("%=赋值给A的值为%d\n",A);
A=8;
A<<=2;
printf("<<=赋值给A的值为%d\n",A);
A>>=2;
printf(">>=赋值给A的值为%d\n",A);
A&=1;
printf("&=赋值给A的值为%d\n",A);
A^=1;
printf("^=赋值给A的值为%d\n",A);
A|=2;
printf("|=赋值给A的值为%d\n",A);
输出结果为:
+=赋值给A的值为12
*=赋值给A的值为48
/=赋值给A的值为12
%=赋值给A的值为0
<<=赋值给A的值为32
>>=赋值给A的值为8
&=赋值给A的值为0
^=赋值给A的值为1
|=赋值给A的值为3
五.关系操作符
关系操作符的值只能是0或1。当运算符的值为真时,结果值都为1;反之,都为0;以下为运算的符号:
大于运算符:>
小于运算符:<
大于等于运算符:>=
小于等于运算符:<=
等于运算符:==
不等于运算符:!=
例如:
int A=180,B;
B=30;
if(A>B)
printf("A大于B\n");
else
printf("A不大于B\n");
if(A<B)
printf("A小于B\n");
else
printf("A不小于B\n");
if(A>=B)
printf("A大于等于B\n");
else
printf("A不大于等于B\n");
if(A<=B)
printf("A小于等于B\n");
else
printf("A不小于等于B\n");
if(A==B)
printf("A等于B\n");
else
printf("A不等于B\n");
输出结果为:
A大于B
A不小于B
A大于等于B
A不小于等于B
A不等于B
六.逻辑操作符
用于连接多个条件的操作符,结果为真时值为1,假则为0;以下为运算的符号:
逻辑与运算符:&&
逻辑或运算符:||
逻辑非运算符:!
例如:
int A=1,B=2;
if(A&&B)
printf("A与B的逻辑为真\n");
else
printf("A与B的逻辑为假\n");
if(A||B)
printf("A或B的逻辑为真\n");
else
printf("A或B的逻辑为假\n");
if(!(A&&B))
printf("逻辑非为真\n");
else
printf("逻辑非为假\n");
输出结果为:
A与B的逻辑为真
A或B的逻辑为真
逻辑非为假
七.条件操作符
条件操作符为三目运算符,(表达式1)?(表达式2):(表达式3);表达式1为真则返回表达式2,反之为假则返回表达式3;以下为运算的符号:
三目运算符:(表达式1)?(表达式2):(表达式3)
例如:
int A=1,B=2,C;
(A>B)?(C=A):(C=B)
printf("C=%d\n",C);
输出结果为:
C=2
八.逗号表达式符
逗号表达式符是用逗号隔开的表达式,从左到右,依次执行,整个表达式的结果为最后一个表达式的结果,注意一定要用括号。以下为运算的符号:
逗号表达式符:(表达式1,表达式2,表达式3...)
例如:
int A=1,B=2,C;
C=(A++,B++,A+B);
printf("C=%d\n",C);
输出结果为:
C=5
九.下标引用符
下标引用符符通常用于数组的数标,方便更改对应数标的数组值。以下为运算的符号:
下标引用符:[]
例如:
int ARR[8]={0};
ARR[6]=10;
十.圆括号符
圆括号符通常用于函数的调用或者条件的引用。以下为运算的符号:
圆括号符:()
例如:
int A=1,B=2,C;
void sum(void){
C=A+B;
if(C>B)
printf("C=%d\n",C);
}
void sum__(int bb){
printf("bb=%d\n",bb);
}
int main(){
sum();
sum__(B);
}
输出结果为:
C=3
bb=2
十一.结构成员符
(1)结构体成员符通常用于结构体变量的调用。以下为运算的符号:
结构体成员符:.
例如:
int A=1,B=2,C;
struct Stu
{
char name[12];
int age;
};
void set_age(struct Stu stu)
{
stu.age = 22;
}
int main()
{
struct Stu stu;
set_age1(stu);
stu.age = 20;
printf("stu.age=%d\n",stu.age);
}
输出结果为:
stu.age=20
(2)结构体指针符通常用于结构体指针变量的调用。以下为运算的符号:
结构体指针符:->
取内容符:*
取地址符:&
例如:
struct Stu
{
char name[12];
int age;
};
void set_age(struct Stu* pStu)
{
pStu->age = 18;
}
int main()
{
struct Stu stu;
struct Stu* pStu = &stu;
stu.age = 20;
set_age2(pStu);
printf("stu.age=%d\n",stu.age);
}
输出结果为:
stu.age=18
十二.求字节符
求字节符通常用于求变量的类型占用的字节数。以下为运算的符号:
结构体成员符:sizeof
例如:
int A=8;
Char B=2;
printf("A=%d\n",sizeof(A));
printf("B=%d\n",sizeof(B));
输出结果为:
A=4
B=1