C语言运算符与表达式教案,C语言学习笔记(三)--运算符与表达式(上)

1运算符和表达式

1.1运算符分类:

算数运算符:用于算数运算,包括+、-、*、/等。

关系运算符:用于比较运算,包括>、

逻辑运算符:用于逻辑运算,包括&&、||、!三种。

位操作运算符:按二进制位对位运算,包括&、|、~、<

赋值运算符:用于赋值运算,包括=、+=、&=等。

条件运算符:三目运算符,用于条件求值(?:).

逗号运算符:用于把若干表达式组合成一个表达式(,)。

指针运算符:用于取内容*和用于取地址&。

求字节数运算符:用于计算数据类型所占的字节数sizeof。

特殊运算符:()、[]、成员(->,.)等。

1.2运算顺序

A.函数计算优先。

B.其次是强制类型转换。

C.自增、自减和取反次之。

D.先乘除再加减。

E.有括号先算括号内的。

注:表达式中出现连续两个运算符时最好用空格隔开,如a+++b要写成:a++ +b或a+ ++b。

2数据类型转换

2.1强制类型转换:就是显示的将表达式转换成所需类型。

方式1:(类型名)(表达式).

方式2:(类型名)表达式.

例:强制类型转换。

#include "stdio.h"

#define PI 3.1415926

main(){

int m,n;

float x,y;

x=2.5;

y=4.8;

m=(int)(x+y);/*强制将浮点型转换成整型*/

n=(int)x+m/3;/*强制将x转换成整型*/

m=n%4; /*整型取余*/

x=x+y;

printf("m=%d,n=%d,x=%f,f=%f",m,n,x,y);

}

注:强制类型转换不会改变原来的变量和表达式的类型属性,只是转换成所 需类型使用。

2.2隐含类型转换:整型、单精度型和双精度型的不同数值类型可以混合运 算,在运算过程中就有隐式类型转换。

隐式类型转换的规则就是:从低向高转换,例如char和short可以转 换为int。

3算术运算符与算术表达式

3.1基本算术运算符:包括+、-、*、/、%五个运算符。

3.2特殊的算术运算符:自加和自减。

前缀形式:先对运算对象自增或自减,再引用运算对象的值作为表达式    的值。

后缀形式:先引用运算对象的值作为表达式的值,再对运算对象自增或    自减。

示例:++a 等价于a=a+1,--a等价于a=a-1;

a++ 等价于a=a+1,a--等价于a=a-1;

注:可以看出单独使用时没有区别,但是在表达式中对表达式影响不同。

例子代码:

#include "stdio.h"

#define PI 3.1415926

main(){

int i=6,j=6,k=6, h=6,m,n,x,y;

m=i++; /*后缀形式自加*/

n=++j; /*前缀形式自加*/

x=k--; /*后缀形式自减*/

y=--h; /*后缀形式自减*/

printf("\n i=%d, m=%d, j=%d, n=%d", i, m, j, n);

printf("\n k=%d, x=%d, h=%d, y=%d", k, x, h, y);

}

4赋值运算符与赋值表达式

4.1简单的赋值运算符

简单赋值的作用就是将一个表达式的值赋给一个变量存储起来,例如a=4;

注:赋值运算的左边必须是变量;

赋值运算优先级比较低,仅优先于,;

4.2复合赋值运算符

就是把运算和赋值结合在一起,例如+=、-=等。

例如:m+=3等价于m=m+3;

4.3赋值表达式的运算

使用表达式应该注意的情况:

4.3.1复合的赋值运算符。

例子代码:

#include "stdio.h"

#define PI 3.1415926

main(){

int x=2,y,z;

x*=3+2; /*等价于x=x*(3+2)*/

printf("(1)x=%d\n",x);

x*=y=z=4; /*等价于y=z=4,x=x*y*/

printf("(2)x=%d\n",x);

x=y=1;

z=x++-1; /*等价于y=x-1,x=x-1*/

printf("(3)x=%d***z=%d\n",x,z);

z=x++*++y; /*等价于y=y+1,z=x*y,x=x+1*/

printf("(4)x=%d***y=%d***z=%d\n",x,y,z);

}

4.3.2赋值转换:指运算符两边类型不同但都是数值或字符,C就会自动转换相应类型。

例子代码:

#include "stdio.h"

#define PI 3.1415926

main(){

int a,b=322;

float x,y=8.88;

char c1='k',c2;

a=y;

x=b;

a=c1;

c2=b;

printf("%d,%f,%d,%c",a,x,a,c2);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值