*a++的含义及C语言中的左值(Lvalues)和右值(Rvalues)
1、 *和++哪个优先级更高?
两个处于同一优先级,编译器结合方向是自右向左,所以*a++可看成*(a++),即先执行a++,后执行*a。但由于这里的“++”号是后加加号,所以会在整条语句执行完后再对a自加一。所以最终的实际执行效果等效为:先执行(*a)操作,后a自加。
*a++可看成*(a++),即先执行a++,后执行*a。但由于这里的“++”号是后加加号,所以会在整条语句执行完后再对P自加一。所以最终的实际执行效果等效为:先执行(*a)操作,后a自加。
2、*a++和(*a)++的区别
一个是 指针后移 一个是指针指向的内容自加
3、举例
int *a, b[2]={2,1},c;
a = b;
c=*a++ 那么 a 指向b[0] 则c=b[0]=2,执行完后a++,这时a 指向b[1]
c=(*a)++ 那么 c =b[1]=2
注意:在编译器中单独的“ *a++ ;”或者“(*a)++”,编译器是会报错的,想实现指针后移 ,应int*a;a++;那么为什么编译器会报错呢?这里就会牵涉到C语言中的左值(Lvalues)和右值(Rvalues)问题。
C 中有两种类型的表达式:
- 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
- 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。*a就是指向存储在内存中某些地址的数值,所以*a++ 即*a=*a(++),(*a)++=(*a)++,都是错误的
*a++的含义及C语言中的左值(Lvalues)和右值(Rvalues)相关推荐
- c语言中字符串关于左值,关于左值lvalue和右值rvalue的一点理解
发现很多朋友对"lvalue"和"rvalue"理解有误,我先谈谈自己对此的一些理解,并期望能够引起更多朋友的广泛讨论.也算起到抛砖引玉的作用吧.引用:注:这里 ...
- C语言中函数的调用和函数返回值(17)
C语言中函数的调用和函数返回值 一.函数的调用形式 按照函数调用出现的形式,可以分为三种调用方式: 1.函数调用语句 例如: printf_star(); 2.函数表达式 c=2*max(a,b); ...
- C语言的左值(lvalue)和右值(rvalue)的含义是什么?
C语言的左支(lvalue)和右值(rvalue)的含义是什么? (1)左值就是一个可被存储的单元,右值就是一个可被读取的数据. (2)左值必须是一个被明确了的内存存储单元,可以用来被赋值: ...
- c语言 变量的左值和右值,C++雾中风景10:聊聊左值,纯右值与将亡值
C++11的版本在类型系统上下了很大的功夫,添加了诸如auto,decltype,move等新的关键词来简化代码的编写与降低阅读代码的难度.为了更好的理解这些新的语义,笔者确定通过几篇文章来简单窥探一 ...
- python右斜杠_Python中的左斜杠、右斜杠(正斜杠和反斜杠)
首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Wi ...
- c 表达式必须是可修改的左值_C++中的左值,右值,左值引用,右值引用
童帅 2020-2-22 文中的"表达式"都是指赋值表达式 左值,右值,左值引用,右值引用 到底是什么 左值和右值 int a = 10; int b = 5; int c = a ...
- [c++]-c++中的左值和右值、左值引用和右值引用、万能引用和引用折叠及完美转发
1.左值和右值 1.1左值和右值定义 在c++中,左值是一个指向内存的东西,换句话来讲,左值有地址,保存在内存中,右值则为不指向任何地方东西,即不在内存中占有确定位置.一般来说,右值是暂时和短暂的,而 ...
- C语言程序顺序结构1交换变量,如何将c语言中结构体内的所有类型变量的值输出来...
教了多年<C程序设计>课程,大多学生觉的这门课程难学.其实,按照我们现在的教学大纲和教学要求,只要同学们掌握一些方法,克服心理上畏难.不轻言放弃,是完全可以学好的. <C 程序设计& ...
- 5求的值c语言编辑,C语言中怎样求1+3+5~~~~~+9值并 – 手机爱问
2018-04-06 C 语言中的原码怎么? 数计算机二进制形式表示数分有符号数和无符号数原码.反码.补码都有符号定点数表示方法有符号定点数高位符号位0正1副下都8位整数例原码数本身二进制形式例100 ...
最新文章
- tjoi2018D2T2(luogu4590) 游园会 (状压dp)
- attribute关键字
- File类对文件的操作应用
- [vue] 删除数组用delete和Vue.delete有什么区别?
- 胶囊网络不同实现代码
- 查看oracle 用户执行的sql语句历史记录
- 清除mysql数据碎片_MySQL 清除表空间碎片方法总结
- 微软服务器系统桌面无图标,开机桌面没有图标的几种解决方法
- Java(Android)游戏开发框架LGame-0.2.7发布
- Python+matplotlib设置y轴标签距离、位置、竖排
- 可以进行单元测试么_大量实例助攻,让你的单元测试更高效
- linux搭建phantomjs+webdriver+testng+ant自动化工程
- turbo c语言编程环境,turbo c(编程软件)
- 达梦DM7DM8下载地址 - 2022-03-16更新
- 编写一个压缩软件(Java实现版本)
- 打字教程新手篇-指法练习的重要性和注意事项
- php快照劫持代码,php快照劫持跳转代码,php快照劫持源码下载
- php短链接api,PHP实现短网址还原API接口
- 从右往左截取字符_按照某个字符串从右到左以第一个为条件截取数据
- 网络通 浏览器 无法上网
热门文章
- 华三交换机升级的ipe文件_交换机版本升级步骤
- 实现私有DNS搭建(正向解析+反向解析+主从同步+安全措施+配置转发服务器+基于ACL实现智能DNS)
- IBM Websphere MQ 基础0:Linux下安装IBM MQ 7.5
- 500万相机芯片尺寸_工业CCD相机芯片靶面尺寸的计算
- 电子信息工程与计算机就业现状,电子信息工程现状及发展前景
- python中获取文件扩展名
- 西行漫记(12):对象,结束与开始
- Google 广告投放(iOS)
- python字符串(二)
- 共赢云时代——用友能源耕云计划全国行河南站圆满结束