C语言运算符超强全面解析

前言: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值