❶ c语言什么叫做左值右值
左值就是在赋值中可以放在赋值操作符两边的值,比如:
inta=1;
doubleb=2.0
a=b;
b=a;
这里a和b都是左值,一切变量都是左值,但const量是例外。
而右值则是只可以放在赋值操作符右边的值,比如:
inta=0;
char*b="hello";
3=a;//ERROR
"howdy"=b//ERROR
这里3和"howdy"都是右值,所以不能放在赋值操作符左边,一切常数、字符和字符串都是右值。
❷ C语言 什么叫做左值右值
左值,就是指可以被取地址的表达式。简单的说,可以出现在等号左边的就是左值。比如:
❸ 关于C语言类型及左值问题
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
❹ c语言中a能做左值么
如果定义时没有const 修饰就可以,否则不行
❺ C语言中什么叫做左值
左值就是在赋值中可以放在赋值操作符两边的值,比如:
int a = 1;
double b = 2.0
a = b;
b = a;
这里a和b都是左值,一切变量都是左值,但const变量是例外。
*p是一个左值,和变量一样,只要在*p的右边加上赋值运算符,就可改变*p的值。
如果p是一个指向常量的指针,*p就是一个不能修改的左值,即它不能被放到赋值运算符的左边。
i和 -i 都是表达式
但一个是左值(i),一个是右值(-i)。
++,--这两种操作符要求作用于左值,所以i++合法,(-i)++不合法。
不严谨的讲,左值右值的区分在于位于等号的那一侧,左侧的是左值,通常是一个变量,右侧的是右值,可以是一个变量,或者是一个表达式。
❻ C语言问题 关于左值的
前面加include<string.h>
strcpy(tiinf[0].NO, "ZH9658")
❼ C语言,关于左值,右值的概念问题
1、例如:a[3] = 5;*p = 55;
2、非常量的变量空间可以写入,自然就是左值了
3、右值指的是常量或者比如算术运算的中间结果,只能读出,不能写入,当然就是右值了
一般而言,左值是可以作为右值的,左值的本意是只写,右值的本意是只读
❽ C语言中的左值究竟是什么值
❾ c语言中什么是左值
左值是指可以被赋值的表达式。左值位于赋值语句的左侧,与其相对的右值(rvaule,见 1.11)则位于赋值语句的右侧。每条赋值语句都必须有一个左值和一个右值。左值必须是内存中一个可存储的变量,而不能是一个常量.
❿ C语言中左值对象有哪些哪些数据类型或是表达式可以算作是左值!
左值,算是可访问存储的区域,要求“可访问存储”,那就可改变,变量(很多类型)就是,常数不是,你可以根据这个判断下左值。
理解下左值对象吧,一般来说是计算机里一块可访问可存储的区域,对象只是这块区域的抽象标识,变量a,b,*p等都算,只不过按不同的类型分出不同大小的区域。标识可以任意给,所以对象有哪些,举不完,而对象类型倒是有,什么int对象,char对象,指针对象等等吧。
既然左值要求的是“可访问可存储”,即可找到它改变它,这个则不会关系到区域大小。而存储区域大小是靠类型来确定(比如int我分多大内存啊),既然不关系到大小,与数据类型何干!
有几个运算符构成的表达式,可以算是左值,不过很少(比如a++;a--;*p等他们可单独成立,这个我也知道不多,还有sizeof(?)挖一块?大小的区域),其他的一般都算右值的,因为表达式最后一般都会产生一个不可变的值(比如a+b,最终整个表达式代表一个结果值,不可变,它要赋给一个存储对象也就是左值),当然左值表达式可以做右值,它本来就存有一个值,可以传给他人嘛。。。
以前研究过左值,可以一起讨论下。。。。。