C语言中左值对象有哪些?哪些数据类型或是表达式可以算作是左值! 10

 我来答
百度网友3ecd7d8b0
2011-06-24 · TA获得超过229个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:107万
展开全部
左值,算是可访问存储的区域,要求“可访问存储”,那就可改变,变量(很多类型)就是,常数不是,你可以根据这个判断下左值。

理解下左值对象吧,一般来说是计算机里一块可访问可存储的区域,对象只是这块区域的抽象标识,变量a,b,*p等都算,只不过按不同的类型分出不同大小的区域。标识可以任意给,所以对象有哪些,举不完,而对象类型倒是有,什么int对象,char对象,指针对象等等吧。

既然左值要求的是“可访问可存储”,即可找到它改变它,这个则不会关系到区域大小。而存储区域大小是靠类型来确定(比如int我分多大内存啊),既然不关系到大小,与数据类型何干!

有几个运算符构成的表达式,可以算是左值,不过很少(比如a++;a--;*p等他们可单独成立,这个我也知道不多,还有sizeof(?)挖一块?大小的区域),其他的一般都算右值的,因为表达式最后一般都会产生一个不可变的值(比如a+b,最终整个表达式代表一个结果值,不可变,它要赋给一个存储对象也就是左值),当然左值表达式可以做右值,它本来就存有一个值,可以传给他人嘛。。。
以前研究过左值,可以一起讨论下。。。。。
风若远去何人留
推荐于2016-03-08 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部
左值指的是双目运算中,位于运算符左侧的表达式。
左值的类型,依赖于运算符的类型。
区分双目运算符,有如下要求:

1 结构体成员访问,有.和->两种。其中.要求左值必须为结构体变量,而->要求左值必须为结构体指针。
2 赋值类运算符,包括=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=,要求左值必须为可赋值的变量。不可以是带有运算符的表达式,也不能是常量。
3 其它双目运算符对左值没有要求,可以为任意表达式,只要有值即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a399495
2011-06-23 · TA获得超过243个赞
知道答主
回答量:48
采纳率:100%
帮助的人:71.3万
展开全部
变量是左值,所以可以放在赋值语句左边。数字字面值是右值,所以不能被赋值。
所以看问题可以知道你应该不了解左值的概念。
左值是指可以出现在赋值语句的左边或右边的。即得是变量来的,而不是数据类型或表达式。该变量是什么数据类型是无所谓的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2011-06-23 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3777万
展开全部
指针解引用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友66c55b2
2011-06-25 · TA获得超过1866个赞
知道小有建树答主
回答量:3035
采纳率:0%
帮助的人:0
展开全部
typedef char VertexType[5];
typedef VertexType SElemType;
SElemType属于char*
改过后
typedef VertexType* SElemType;
SElemType属于char

*S->top++ = e;
S->top属于char [5];
e属于char*
改过后两边都是char型
*S->top++取值为char型,然后指针加1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式