欢迎来到天天文库
浏览记录
ID:14169506
大小:199.50 KB
页数:11页
时间:2018-07-26
《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]。四、指针数组因为指针是变量,
此文档下载收益归作者所有