抛开下标运算的表面,深入的去探讨下标运算的本质

本文通过示例代码详细解析了C语言中运算符的优先级和结合性,以及下标运算的特殊用法。通过分析输出结果,解释了如何正确理解和应用这些概念,特别强调在遇到复杂表达式时,理解优先级和结合性的重要性。同时,展示了指针和数组下标运算的组合使用,揭示了其背后的逻辑。
摘要由CSDN通过智能技术生成

我讲这个的目的就是让大家能够对运算符的优先级和结合性有更深刻的认识,还有大家能够对下标运算有更深刻理解。这是我给大家讲这个的目的。

  1 #include<stdio.h>                                                                                         
  2 #include<stdlib.h>                                                                                        
  3                                                                                                           
  4 int main(int argc,char *argv[])                                                                           
  5 {                                                                                                         
  6     int nums[3][3]={1,2,3,4,5,6,7,8,9};                                                                   
  7     printf("%d\n",nums[1][-2]);                                                                           
  8     printf("%d\n",(-1)[nums][5]);                                                                         
  9     printf("%d\n",-1[nums][5]);                                                                           
 10 }          

输出如下

2
3
-9

有的同学可能看得不是很懂上面的输出,现在我们在看下面的这一串代码

#include<stdio.h>                                                                                         
  2 #include<stdlib.h>                                                                                        
  3                                                                                                           
  4 int main(int argc,char *argv[])                                                                           
  5 {                                                                                                         
  6     int nums[3][3]={1,2,3,4,5,6,7,8,9};                                                                   
  7     printf("%d\n",nums[1][-2]);                                                                           
  8     printf("%d\n",(-1)[nums][5]);                                                                         
  9     printf("%d\n",-1[nums][5]);                                                                           
 10     printf("%d\n",1[nums][5]);                                                                            
 11     printf("%d\n",-2[nums][0]);                                                                           
 12     printf("%d\n",-100);                                                                                  
 13     return 0;                                                                                             
 14 }                         

输出是

2
3
-9
9
-7
-100

我想经过上面的输出大家大概明白了大概是怎么回事,我想说的是下标运算不只是 地址[下标]这么运用,也可以 下标[地址],至于最上面的输出是3,-9,是因为优先级和结合性的原因,[]和()的优先级是最高的,结合性是从左到右边的,因为有一个-号所以输出的是-9。所以在今后的学习中在看不清楚的时候,不妨多看一看有限级和结合性标,特别是不清楚一个指针的类型的时候,或者是结构体的类型的时候,都能够有很大的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值