c语言运算符的优先级

c语言运算符的优先级

ID:14169506

大小:199.50 KB

页数:11页

时间:2018-07-26

c语言运算符的优先级_第1页
c语言运算符的优先级_第2页
c语言运算符的优先级_第3页
c语言运算符的优先级_第4页
c语言运算符的优先级_第5页
资源描述:

《c语言运算符的优先级》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、运算符及其优先级优先级运算符名称或含义使用形式结合方向优先级运算符名称或含义使用形式结合方向1[]数组下标数组名[常量表达式]左到右7==等于表达式==表达式左到右()圆括号(表达式)/函数名(形参表)!=不等于表达式!=表达式.成员选择(对象)对象.成员名8&按位与表达式&表达式左到右->成员选择(指针)对象指针->成员名9^按位异或表达式^表达式左到右2-负号运算符-表达式右到左10

2、按位或表达式

3、表达式左到右(类型)强制类型转换(数据类型)表达式11&&逻辑与表达式&&表达式左到右++自增运算符++变量名/变量名++12

4、

5、

6、逻辑或表达式

7、

8、表达式左到右--自减运算符--变量名/变量名--13?:条件运算符表达式1?表达式2:表达式3右到左*取值运算符*指针变量14=赋值运算符变量=表达式右到左&取地址运算符&变量名/=除后赋值变量/=表达式!逻辑非运算符!表达式*=乘后赋值变量*=表达式~按位取反运算符~表达式%=取模后赋值变量%=表达式sizeof长度运算符sizeof(表达式)+=加后赋值变量+=表达式3/除表达式/表达式左到右-=减后赋值变量-=表达式*乘表达式*表达式<<=左移后赋值变量<<=表达式%余数(取模)整型表达式/整型表达式>>=右

9、移后赋值变量>>=表达式4+加表达式+表达式左到右&=按位与后赋值变量&=表达式-减表达式-表达式^=按位异或后赋值变量^=表达式5<<左移变量<<表达式左到右

10、=按位或后赋值变量

11、=表达式>>右移变量>>表达式15,逗号运算符表达式,表达式,…左到右6>大于表达式>表达式左到右>=大于等于表达式>=表达式<小于表达式<表达式<=小于等于表达式<=表达式11数组和指针一、指向一维数组元素的指针inta[10],*p;p=&a[0];/*与语句 p=a;等价*/此时p指向数组中的第0号元素,即a[0],*p就是*a,就是a[0]的值

12、,*(a+i)就是a[i]的值。由于数组元素在内存中是连续存放的,根据地址运算规则,p+i和a+i都表示为a[i]的地址(即&a[i])。二、二维数组元素的地址为了说明问题,我们定义以下二维数组:inta[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};二维数a也可这样来理解:数组a由三个元素组成:a[0],a[1],a[2],而每个元素又是一个一维数组,且都含有4个元素(相当于4列)。如图所示:           ______     _______________       a----

13、a[

14、0]

15、----

16、0

17、1

18、2

19、3

20、------>(0x1000)              

21、______

22、   

23、___

24、___

25、___

26、___

27、              

28、a[1]

29、----

30、4

31、5

32、6

33、7

34、------>(0x1010)              

35、______

36、    

37、___

38、___

39、___

40、___

41、              

42、a[2]

43、----

44、8

45、9

46、10

47、11

48、------>(0x1020)              

49、______

50、    

51、___

52、___

53、___

54、___

55、但从二维数组的角度来看

56、,a代表二维数组的首地址,当然也可看成是二维数组第0行的首地址,a+1就代表第1行的首地址,依次。如果此二维数组的首地址为0x1000,由于第0行有4个整型元素,所以a+1为0x1010。既然我们把a[0],a[1],a[2]看成是一维数组名,可以认为它们分别代表它们所对应的数组的首地址,也就是讲a[0]代表第0行中第0列元素的地址,即&a[0][0],a[1]是第1行中第0列元素的地址,即&a[1][0],根据地址运算规则,a[0]+1即代表第0行第1列元素的地址,即&a[0][1],一般而言,a[i]+j即代表第i行第j列元素

57、的地址,即&a[i][j]。另外,在二维数组中我们还可用指针的形式来表示各元素的地址,如a[0]与*(a+0)等价,a[i]与*(a+i)等价,它表示数组元素a[i]的地址&a[i][0]。而二维数组元素a[i][j]可表示成*(a[i]+j)或*(*(a+i)+j),或者写成(*(a+i))[j]。三、指向一个由n个元素所组成的数组指针数组指针用的比较少,但在处理二维数组时,还是很方便的。例如:int (*p)[4]; /*在数组指针的定义中,圆括号是不能少的,否则它是指针数组*/inta[3][4];p=a; 开始时p指向二维

58、数组第0行,当进行p+1运算时,根据地址运算规则,此时放大因子为4x4=16,所以此时正好指向二维数组的第1行。和二维数组元素地址计算的规则一样,*p+1指向a[0][1],*(p+i)+j则指向数组元素a[i][j]。四、指针数组因为指针是变量,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。