ITPub博客

首页 > Linux操作系统 > Linux操作系统 > C程序设计学习笔记(3)——运算符

C程序设计学习笔记(3)——运算符

原创 Linux操作系统 作者:YYCatNJU 时间:2010-06-08 11:09:13 0 删除 编辑
运算符和表达式

一、C运算符

(1)算术运算符(+、-、*、/、%)

(2)关系运算符(>、<、>=、<=、==、!=)

(3)逻辑运算符(!、&&、‖)

(4)位运算符(~、∧、&、∣、<<、>>)

(5)赋值运算符(=)

(6)条件运算符(?:)

(7)逗号运算符(,)

(8)指针运算符(*、&)

(9)长度运算符(sizeof)

(10)强制类型转换((类型))

(11)分量运算符(.、->)

(12)下标运算符([])

(13)其他(如函数调用())

二、算术运算符

+:加

-:减

*:乘

/:除

%:取余

①优先级:*、\优于+、-

结合方式:自左至右

例:10+a*p-b/e

第一步:a*p

第二步:a*p的结果加上10

第三步:b/e

第四步:a*p+10的结果减去b/e的结果

②\运算只能是整数,其结果也是整数

例:5/3=1  -5/3=-1

三、强制类型转换

(1)转换类型

系统自动转换:遵循类型转换表

强制类型转换:根据需要强行规定数据的类型

(2)一般形式

(类型)(表达式)

例:(int)a           /*将a 的类型强制定义为整型*/

(double)(x+y)  /*将表达式x+y强制定义为双精度型*/

四、自加自减运算(++、--)

(1)作用是使变量的值加1或减1

(2)++i,--i与i++,i--的区别

++i,--i (在使用i之前使i的值加1或减1)

i++,i-- (在使用i之后使i的值加1或减1)

(3)只能用于变量

5++是不合法的

(4)++、--的结合方向是自右至左

如printf(”%d”,-i++):由于-运算符和++运算符的优先级都是2,结合性都是右结合性,所以原式应等价于printf(”%d”,-(i++)),即如果i的原值等于3,那么先输出3,然后再与-号结合等于-3,然后才对i加1。

赋值运算

一、赋值运算符

赋值运算符为“=”,其意义是将一个常量或表达式赋给一个变量,进行一次赋值操作。

二、赋值运算要求的数据类型转换

(1)将浮点型数据赋给一个整型变量(浮点型>整型)

先将浮点型转换为整型(舍去小数部分),然后以整型形式存储。

如:将3.6赋给int a,结果a为整型,a=3。

(2)将整型数据赋给一个浮点型变量(整型>浮点型)

情况1:整型赋值给单精度浮点数

先将整型转换为浮点型(补足有效位),然后以浮点型形式存储。

如:将23赋值给float a,结果a为float型,a=23.00000。

情况2:整型赋值给双精度浮点数

先将整型转换为双精度浮点型(补足有效位),然后以浮点型形式存储。

如:将23赋值给double a,结果a为double型,a=23.000000000000。

(3)将单精度型赋值给双精度型(单精度型>双精度型)

先将单精度型转换为双精度型(补足有效位),然后以双精度型形式存储。

如:将float a=23.00000赋值给double b,结果b为double型,b=23.000000000000。

(4)将双精度浮点型赋值给单精度浮点型(双精度型>单精度型)

先将双精度型转换为单精度型(截取有效位),然后以单精度型形式存储。

如:将double a=23.000000000000赋值给float b,结果b为float型,b=23.00000。

(5)将字符型赋值给整型(字符型>整型)

情况1:有符号型字符常量赋值给整型

若最高位为0,则高八位补0;若最高位为1,则高八位补1。

情况2:无符号型字符常量赋值给整型

高八位补0。

(6)将整型数据赋值给字符型(整型>字符型)

先将整型转换为字符型(保留存储形式的低八位),然后以字符型形式存储。

如:将int a=65赋值给char b,a在内存中的形式为0000000001000001,b的结果为01000001。

注意:

1.       赋值运算的类型转换有别于算术运算的类型转换

2.       赋值运算类型转换与有效位、存储形式有关

二、复合赋值运算符

复合运算符包括+=、-=、*=、/=、%=、>>=、<<=、&=、

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

三、赋值运算的求解过程

由于赋值运算符的结合性是自右至左,所以应先算右边的表达式后算左边的表达式。

四、赋值运算举例

a=(b=5)                                      结果a的值为5


a=b=c=5                                      结果a的值为5

a=5+(b=0)                                     结果a的值为5

(a=3*5)=3*4                                结果a的值为12

 

逗号运算符

一、逗号运算的一般表达式

表达式1,表达式2,表达式3,……,表达式n

二、逗号运算的求解过程

先求表达式1,后求表达式2,……即顺序求值。

三、逗号表达式的值

逗号表达式取最后一个表达式的值,如

1+2,3+4             此逗号表达式的值为7

a=1+2,a*3          此逗号表达式的值为9

四、逗号表达式的优先级

在附录C中,逗号表达式的优先级为15,排在最后,因此无论逗号表达式与其他任何表达式结合,都是最后执行逗号运算。

五、注意项

声明里的逗号和参数间的逗号都不是逗号表达式,它们只是起间隔作用。如

int a,b,c             这是声明

main(a,b,c)        这是参数

 

 

不同进制之间的换算

(1)十进制转换为二进制:  除以2逆序取余(整数)

                           乘以2顺序取整(小数)

(2)十进制转换为八进制:  除以8逆序取余(整数)

                           乘以8顺序取整(小数)

(3)十进制转换为十六进制:除以16逆序取余(整数)

                           乘以16顺序取整(小数)

(4)其他进制转换为十进制:(abc)n =a*n2+b*n1+c*n0

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24055160/viewspace-664668/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-06-07

  • 博文量
    4
  • 访问量
    2992