C语言中函数能否做左值 c语言必须是可以修改的左值

C语言中什么叫做左值左值就是在赋值中可以放在赋值操作符两边的值 , 比如:
int
a
=
1;
【C语言中函数能否做左值 c语言必须是可以修改的左值】double
b
=
2.0
a
=
b;
b
=
a;
这里a和b都是左值,一切变量都是左值,但const变量是例外 。
*p是一个左值 , 和变量一样 , 只要在*p的右边加上赋值运算符,就可改变*p的值 。
如果p是一个指向常量的指针,*p就是一个不能修改的左值 , 即它不能被放到赋值运算符的左边 。
i和
-i
都是表达式
但一个是左值(i),一个是右值(-i) 。
,--这两种操作符要求作用于左值,所以i合法,(-i)不合法 。
不严谨的讲 , 左值右值的区分在于位于等号的那一侧,左侧的是左值,通常是一个变量,右侧的是右值,可以是一个变量,或者是一个表达式 。
C语言 什么叫做左值?右值?左值 ,就是指可以被取地址的表达式 。简单的说,可以出现在等号左边的就是左值 。比如C语言中函数能否做左值:
另外也可以有不是变量的左值C语言中函数能否做左值:
这里,getRef()返回的是一个全局变量的引用,它的值存在固定的位置,因此是一个左值 。
右值,则指的是没有名字的值 , 它们只出现表达式的计算过程中,也就是等号的右边 。例如C语言中函数能否做左值:
getName()返回一个在函数中构造的字符串 。你可以把它的值赋给一个变量,但是它是一个临时对象,C语言中函数能否做左值我们并不知道它的值放在哪里 。所以,getName()是一个右值 。
说清楚C语言中函数能否做左值了什么是左值和右值,那么什么是右值引用呢?右值引用 是C11中新引入,是一种只绑定与右值的引用 。区别与左值引用(),它用来表示 。与左值引用一样,它也可以是const或者是非const的,但是我们基本不会在实际应用中用到const的右值引用(这个大家可以思考一下为什么) 。让我们来看一些例子:
从例子中,我们可以看到const的左值引用可以绑定到右值,非const的左值引用不能绑定到右值,右值引用可以绑定到右值 。那么右值引用怎么帮助我们解决问题呢?让我们接着看右值引用在作为函数参数时的行为 。假如我有下面两个函数:
第一个printReference函数是用const左值引用作为参数,从前面的例子中我们知道它既可以接受左值也可以接受右值 。但是当有了第二个printReference的用右值引用的重载之后 , 右值将优先绑定到第二个printReference 。这点我们可以通过如下代码来验证:
输出为:
C语言,关于左值,右值的概念问题1、例如:a[3] = 5;*p = 55;
2、非常量的变量空间可以写入,自然就是左值了
3、右值指的是常量或者比如算术运算的中间结果 , 只能读出,不能写入 , 当然就是右值了
一般而言,左值是可以作为右值的,左值的本意是只写 , 右值的本意是只读
C语言语法问题,左操作数必须为左值是什么意思啊?我该怎么改?。?/h2>所谓左值是指一个能用于赋值运算左边的表达式 。左值必须能够被修改 , 不能是常量 。我们用变量作左值,还可以看到 , 指针和引用也可以作左值 。改成b=9-c 。
一般形式为:变量=表达式 。它的作用是将一个表达式的值赋给一个左值 。
计算赋值运算符右侧表达式的值(“=”为赋值运算符),将赋值运算符右侧表达式的值赋给左侧的变量 , 将赋值运算符左侧的变量的值作为表达式的值 。
例如:
int a, b, c;
a=3;
b=4;
c = ( ab )*(2*a - b) // 得出14
扩展资料:
注意
1. 多重赋值表达式不能出现在变量说明中 。例如:
int i=j=0;
是非法的 。
例:有变量说明
int a=2,b;
指出下面表达式运算后a和b的结果 。
b =b=a;
答:a为3 , b为6 。
有时将赋值运算与比较运算结合在一起形成嵌入赋值 。例如:
while ((ch=getchar())!='\n');
这条语句的含义是:等待用户按下回车键后程序向下执行 。
2. x *= y 8等价于x=x*(y 8) , 不等价于 x = x*y 8 。
同样:z = y-x等价于z = z(y-x),而不等价于z = z y -x 。
参考资料:
百度百科-赋值运算符
C语言中函数能否做左值的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言必须是可以修改的左值、C语言中函数能否做左值的信息别忘了在本站进行查找喔 。

    推荐阅读