鱼C论坛

 找回密码
 立即注册
查看: 82|回复: 2

[已解决]C语言的左值右值

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有没有大佬通俗的讲一下C语言的左值右值,看了书还是云里雾里
最佳答案
3 天前
左值:有名字、有地址,可以赋值  
右值:临时的、没有名字,只能用来计算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
通俗易懂地理解 C 语言中的左值和右值

很多鱼油在学习 C 语言时,都会被“左值”和“右值”这两个概念搞晕。其实它们并不难,下面我用一个简单的比喻来帮你理解。

一、什么是左值(lvalue)?

左值就是“可以放在赋值号左边的值”,它代表的是一个“有名字的内存位置”。

比如:
int a = 10;
a = 20;

这里的 a 就是左值,因为它代表的是变量 a 所在的内存位置,我们可以给它赋新值。

二、什么是右值(rvalue)?

右值就是“只能放在赋值号右边的值”,它代表的是一个“具体的数值或临时结果”。

比如:
int a = 10;
int b = a + 5;

这里的 10a + 5 都是右值,它们是表达式的结果,不能再被赋值。

你不能写:
10 = a;      // 错误!10 是右值,不能放左边
a + 5 = b;   // 错误!a + 5 是右值,不能放左边

三、一个小口诀帮助记忆

  • 左值:能放左边,代表“位置”
  • 右值:只能右边,代表“数值”


四、特别注意:有些表达式既是左值又是右值

比如:
int a = 5;
int *p = &a;
*p = 10;

这里的 *p 是左值,因为它可以被赋值;但它也是右值,因为它是表达式的结果。

总结

左值:有名字、有地址,可以赋值  
右值:临时的、没有名字,只能用来计算

如果你还不太明白,可以把变量看成“盒子”,左值是“盒子的位置”,右值是“盒子里的东西”。

有任何不懂的地方欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层    本楼为最佳答案   
左值:有名字、有地址,可以赋值  
右值:临时的、没有名字,只能用来计算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-3-31 19:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表