C语言:运算符

1.  算术运算符

C语言提供的算术如下表

运算符功能说明举例
+加法a+b
-减法a-b
*乘法a*b
/除法a/b
%取模或取余a%b
++增1a++,++a
--减1a-- ,--a

举几个运算的例子

int a = 25, b = 8,c;

c = a + b;
printf("c=%d\n",c);  // c=33

c = a - b;
printf("c=%d\n",c);  // c=17

c = a * b;
printf("c=%d\n",c);  // c=200

c = a / b;
printf("c=%d\n",c);  // c=3 运算后保留整数部分

c = a % b;
printf("c=%d\n",c);  // c=1  运算后保留余数部分

c = a++;             // 先赋值给c,后运算
printf("c=%d\n",c);  // c=25
printf("a=%d\n",a);  // a=26 

c = --b;             //先运算,后赋值给c
printf("c=%d\n",c);  // c=7  
printf("b=%d\n",b);  // b=7 

2.  关系运算符

C语言的关系运算符如下:

运算符功能说明举例
>大于

a>b

>=大于等于

a>=10

<小于a<3
<=小于等于a<=b+1
==等于a==100
!=不等于a!=0

 举例:

int a=5,b=6,c;

//结果为真为1,假为0

c=a>(b-1)      //c=0
c=(a+1)==b     //c=1
c=a>=(b-3)     //c=1
c=a!=b         //c=1    

3.  逻辑运算符

C语言的逻辑运算符如下:

运算符功能说明举例
逻辑非!(x==0)
&&逻辑与x>0&&x<100
||逻辑或y<10||x<10

3.1  逻辑非 "!"

逻辑非"!"运算符的运算规律如下

运算量结果
10
01

例如:

int x=6,y;

y=!(x==0);     //y=1
y=!((x-6)==0); //y=0
y=!(x<=0);     //y=1

3.2  逻辑与"&&"

逻辑与"&&"运算符的运算规律如下:

左运算量右运算量结果
111
100
010
000

TIPS:只有左右运算符为真,结果才为真,否则为假。

int x=5,y=10,z;

z=(x>=5)&&(y<20)    //z=1
z=(x>5)&&(y<20)     //z=0
z=(x>5)&&(y>20)     //z=0
z=(x==5)&&(y>20)     //z=0

3.3  逻辑或"||"

逻辑或"||"运算符的运算规律如下:

左运算量右运算量结果
111
101
011
000

TIPS:左右运算量只要有一个为真,则结果为真。只有两者为假,结果才为假。

int a=3,b=5,c;

c=(a+1<5)||(b<10)    // c=1
c=(a+1>=5)||(b!=10)  // c=1
c=(a+1<5)||(b==10)   // c=0

4.  位运算符

C语言的位运算符如下:

运算符功能说明

举例

~位逻辑反

~a

&位逻辑与a&b
|位逻辑或a|b
^位逻辑异或a^b
>>右移位a<<1
<<左移位b>>3

4.1  位逻辑反"~"

通过实例来理解:

char x=0x17,y;  //定义一个16进制数
y=~x;

在计算机内存中,将x转化为二进制数:

00010111

y赋值后在计算机内存中如下:

11101000

4.2  位逻辑与"&"

位逻辑与"&"运算符运算规律如下:

左运算量位值右运算量位值位与结果值
000
010
100
111

TIPS:只有左右运算符为1,结果才为1,否则为0。

通过例子来加深理解

int x = 0x97,y = 0xba,z;
z=x&y;

将x,y转化为二进制数并运算:

左运算量z10010111
右运算量y10111010
结果z10010010

最后z的值为0x92。

4.3  位逻辑或"|"

位逻辑或“|”运算符的运算规律如下:

TIPS:左右运算只要有一个为1,结果就为1,两者为0结果则为0。

例如:

int x = 076,y = 0x89,z;
z=x|y;

将x,y转化为二进制数并运算:

左运算量x00111110
右运算量y10001001
结果z10111111

z的赋值结果为:0xbf

4.4  位逻辑异或"^"

位逻辑异或“^”运算符的运算规律如下:

TIPS:左右运算量位值相同时,结果为0,不同则为1。

例如:

int x = 72,y = 0152,z;
z=x^y;

将x,y转化为二进制数并运算:

左运算量x001001011
右运算量y001101010
结果z000100001

z的赋值结果为041

4.5  位移位运算"<<" ">>"

位移位运算的一般形式:<运算量> <运算符> <表达式>

TIPS:<运算量> 必须为整型结果数值;

            <运算符>为左移位(<<)或 右移位(>>)运算符;

            <表达式> 也必须为整型结果数值。

举个例子:

int a = 0xe4,b;
b=a<<3;         //将a向左移三位
a11100100
结果00100000

向左移动三位,左边三位舍去,其余位补0。

5.  赋值运算符

赋值运算符为“=”,其运算的一般形式如下:

<左值表达式> = <右值表达式>

赋值复合运算符其运算的一般形式如下:

<变量><操作符>=<表达式>

例如: ​​​​​​a+=b  等价于  a=a+b

            a&=b  等价于  a=a&b

6.  特殊运算符

6.1  条件运算符"?"

是三目运算符,其运算的一般形式是:

<表达式1> ?<表达式2> :<表达式3>

若“表达式1”为真(非零)则执行并返回“表达式2”的值;如果“表达式1”为假(零),则执行并返回“表达式3”的值。

例如:

int x=82, y=101;
x >= y ? x+18 : y-100     //运算结果为1
x < (y-11) ? x-22 : y-1   //运算结果为60

6.2  sizeof运算符

sizeof是一个用于计算数据类型或变量占用字节大小的运算符

运算的一般形式:sizeof(<类型或变量名>)

注意:它只针对数据类型,而不针对变量!

例如:

int i;
sizeof(i);   //正确编译 i的类型为int 等价于sizeof(int)
sizeof i;    //正确编译
sizeof(int); //正确编译
sizeof int;  //报错

7.  运算符的优先级

各个符号的运算优先级如下表:

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值