对于左操作数必须为左值的问题

鼎阳示波器SCPI指令与MD5算法解锁带宽升级实战 本文详细介绍了鼎阳示波器通过SCPI指令与MD5算法实现带宽升级的实战流程。从设备连接、信息获取到Python密钥生成脚本解析,逐步指导用户完成升级操作,并涵盖常见问题排查与功能选件激活指南,帮助用户充分释放设备潜能。 阅读详情
C++中只有返回引用或指针时,返回值才能为左值,这时才能对返回值进行操作。
                         而返回值则不能为左值,也不能对返回值进行操作。
例如:
1.返回一个值。
class tesA
{
public:
tesA(){a=2;}
int geta(){return a;}


private:
int a;
};
int main(int argc, char **argv)
{
tesA *mtesA = new tesA;
mtesA->geta() =5;  // 相当于 int temp = mtesA->geta(); temp = 5;
cout << mtesA->geta() << endl;
system("pause");
return 0;
}
编译器会报错:error C2106: “=”: 左操作数必须为左值。这是因为编译器在函数有返回值时
会自动申请一个临时变量,假如是int temp 那么函数调用完后int temp = mtesA->geta();如果给返回值赋值就变成了:
temp = 5;这样做丝毫不会对a产生影响。而且对一个临时变量这样操作没有任何意义。
2.返回一个引用: 可以为左值
class tesA
{
public:
tesA(){a=2;}
int geta(){return a;}


private:
int a;
};
int main(int argc, char **argv)
{
tesA *mtesA = new tesA;
mtesA->geta() =5;  // 相当于 int &temp = mtesA->geta(); temp = 5;
cout << mtesA->geta() << endl;
system("pause");
return 0;
}
这里相当于int &temp = mtesA->geta();我们知道引用就是别名,也就是说temp就是mtesA->geta()的别名
那么操作temp也就是操作mtesA->geta()。
3.返回一个指针:可以为左值


class tesA
{
public:
tesA(){a=new int(1);}
int* geta(){return a;} 


private:
int *a;
};
int main(int argc, char **argv)
{
tesA *mtesA = new tesA;
*(mtesA->geta()) =5;   
system("pause");
return 0;
}
这是相当于申请临时指针int *temp 它被赋值后为:int *temp  = mtesA->geta(); 
这时temp指向的地址就和a一样。所以操作temp就是操作a。
【工程师一次性讲明白系列】什么是电压驻波比 (VSWR) 电压驻波比(VSWR)是电信号传输过程中非常重要的指标,控制VSWR的大小可以提高信号传输效率和系统稳定性。通过优化阻抗匹配,可以有效地减少反射信号,提升通信质量!🚀📡。 阅读详情

相关推荐

低成本实现webhook接收端[python]

Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求。

锡城小凯的博客 1万+

报错2: left operand must be l-value

语言:c/c++ = : left operand must be l-value 到底是什么错误? 解释:赋值号(‘=’)左边的操作数必须是一个左值。通俗的说:左值就是可以改变的值的变量。 发生这个错误的原因是你把常量(或不可改变值的变量)放到了赋值号的左边。 例如:int a[3]; a++;//这里就相当于a=a+1;注意a是数组a[3]的首地址,在声明a[3]后,将开辟一段连续内存空间。 //就是这段连续内存空间的首地址,是一个常量。所以这里将常量放到了赋值号的左边是错误。 //类似的,在C语言中是

qq_63593743的博客 4265

Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案

【代码】Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案。

2401_86789230的博客 2万+

如何理解左操作数必须为左值

本文转载自 : _Hebrew博客 声明:本博文用于学习总结及工作心得在C语言中经常会遇到一个问题就是做操作数必须为左值,看一下代码:int a=1,b=2;a<b?a:b=10;在C++编译器环境下,能正常运行,没有错误,但是在C编译器下却会报错: error C2106 “=”:做操作数必须为左值 什么是左值?首先需要明白什么是表达式:表达式由一个或多个操作数通过操作符组合而成。最简单的表

Quartz's Blog 1万+

在Proteus中用80C51模拟4线SPI点亮OLED屏幕

在Proteus里用80C51模拟4线SPI控制OLED屏幕使其显示图案(汇编实现)。

Connor3093的博客 5003

AI工具 | 每个打工人必备的15款人工智能超级工具

不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。

Vampire_2017的博客 5万+

c语言中出现左操作数必须是左值(摘抄)

http://blog.163.com/zhangjun516@126/blog/static/164345335201282894854960/ 在做c语言联系的时候,总是会出现左操作数必须是左值, 左值就是在赋值中可以放在赋值操作符两边的值,比如: int a = 1; double b = 2.0 a = b; b = a; 这里a和b都是左值,一切变量都是左值,

l494926429的博客 2万+

SAP_MM模块通过CC11 创建物料版本

通过本文,我们了解了 SAP 的[SAP_MM模块通过CC11 创建物料版本]的基本概念和应用方法。当物料主数据、BOM(物料清单)、工艺路线等对象需要进行变更控制时,通过创建“版本”或“更改单”来记录、控制和追溯变更。创建完变更主记录(Change Number)后,可在物料主数据维护时引用它,从而创建物料版本化信息。,在其中可以定义物料、BOM、工艺路线等对象的变更版本信息,从而在系统中实现版本化的物料管理。

我小时候很黑的博客 816

C语言小白成长课之整型数据(2)

目录整型数据二级目录三级目录 整型数据 新建项目 我们直接在解决方案下创建新的项目即可,右键单击解决方案,然后选择添加,选择新建项目即可! 创建项目之后在源文件的地方,添加main.c文件,以.c后缀命名的文件以c语言的规则运行! p5 16分 二级目录 三级目录 ...

weixin_51624736的博客 1714

常说的cache机制到底是什么?L1 cache和 L2 cache是什么?

一文带你迅速了解CPU内的cache机制!!图解多核CPU中的多级cache结构。为何有的处理器没有cache?

车载系统攻城狮 5878

Python爬虫实战:深度解析携程/飞猪酒店评论API与大数据采集

本文详细介绍了如何通过Python爬虫技术获取携程和飞猪平台的酒店评论数据。我们涵盖了从API分析、反爬虫对策到数据存储和处理的完整流程。API逆向分析:通过浏览器开发者工具发现和分析API接口反爬虫对策:使用请求头随机化、IP代理、浏览器自动化等技术异步处理:使用asyncio提高爬取效率数据质量:实现数据清洗和质量检查机制系统架构:构建可扩展的分布式爬虫系统未来改进方向:机器学习识别验证码分布式爬虫架构实时数据流处理更智能的反反爬虫策略。

2201_76125261的博客 601

解决VC C2106,“=”左操作数必须为左值的问题

简单的例子: a=1; 左操作数为a,必须是变量 如果写成1=a;就会报错。 需要特别注意的是结构体数组,也是我出错的部分,我定义了两个结构体数组变量分别为 struct A[20]; struct B[20]; 进行赋值的时候写的是: unsigned char a[10]; A[0].a =B[0].a; 这样写出来的,如果a是普通变量就不会报错,a是数组变量就会报以上错误,解决方法是在结构体数组赋值的时候不能用=,而是写成memcpy是形式,如下: memcpy(A[0].a .

weixin_43324043的博客 4829

179、运动控制中的行业标准:机器人安全标准ISO 10218

今天这篇笔记,就把我踩过的坑和标准里的硬骨头掰开揉碎讲清楚。

m0_50546716的博客 169

遇到问题: C语言---error C2106: “=”: 左操作数必须为左值

此方法不行 #include<stdio.h> #include<windows.h> #include<string.h> // 不要忘了 struct student { int number; char name[256]; char sex[3]; int age; int grade; }; // 声明 int main() { ...

计算机视觉 5190

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

左操作数必须为左值_首都师范大学左东岭教授主讲“中国古代文学的原发性问题”...

11月29日晚,教育部长江学者特聘教授、首都师范大学资深教授、中国文学思想研究院院长、教育部人文社科重点研究基地中国诗歌研究中心主任左东岭教授做客我院上林人文社科讲坛第83讲,在教育博物馆西附楼S301举办了题为“中国古代文学的原发性问题研究”的讲座。讲座由文学院副院长杨晓斌教授主持,学校党委常委、副校长党怀兴,人文社会科学高等研究院院长李继凯、副院长李胜振,及70多位师生共同聆听了讲座...

weixin_39610631的博客 226

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ecos3.0编译 if_lancepci.c:528: 错误: 赋值运算的左操作数必须是左值

/home/xin/ecos3/ecos-3.0/packages/devs/eth/amd/lancepci/v3_0/src/if_lancepci.c:528: 错误: 赋值运算的左操作数必须是左值 vi /home/xin/ecos3/ecos-3.0/packages/devs/eth/amd/lancepci/v3_0/src/if_lancepci.c ...

weixin_30641465的博客 288

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

c语言 2106错误,显示 error C2106: '=' : left operand must be l-value请教

显示 error C2106: '=' : left operand must be l-value请教#include#includestruct AdressBook{ char name[20];char tel[20];}txl[5]={{"Li","39344752"},{"Wang","39344730"},{"Xie","39344784"},{"Zhang","39374776"}...

weixin_39761645的博客 2192

详解 C++ 左值、右值、左值引用以及右值引用

主要讲解了 C++11 的右值引用(及其支持的移动语义和完美转发)。

Butayarou的博客 2万+

解决错误:左值必须作为赋值的左操作数

左值是赋值的左操作数In this tutorial you will know about one of the most occurred error in C and C++ programming, i.e.lvalue required as left operand of assignment. 在本教程中,您将了解C和C ++编程中最常见的错误之一,即, 左值是赋值的左操作数。 ...

culing2941的博客 2万+

左操作数必须为左值另一种看法

左操作数 称为“ 左值 ”, 必须 放在内存中可以访问且可以合法修改值的存储单元中,通常只能是变量名;

qq_58244818的博客 1775

左值与右值

左值与右值 一、左值 左值表示一个占据内存中可识别位置的一个对象,更进一步地,可以对左值取地址 int a = 10; int *p = &a; int **q = &p; a,p,q都是很经典的左值,可以通过标识符a,p,q,取出内存地址中对应的对象 int a;// ① a = 4;// ② ①如果在函数中执行该语句的话,变量a会在栈帧中开辟一个4字节的内存空间其值未定义。所以a为左值,能够取其地址 ②赋值语句中左操作数必须是一个左值,赋值操作本质上是对内存进行更新,所以我们必须要找

weixin_45425093的博客 5733

C++ 左值、右值、左值引用、右值引用

一、左值右值 1.1 定义 在C++中有几个晦涩的概念:左值、右值、泛左值、纯右值、将亡值 泛左值=左值+将亡值; 右值=纯右值+将亡值; 我们可以发现将亡值既属于泛左值又属于右值; 这些分类是由于它们具有不同性质而命名的,但其实我们只需要掌握左值和右值的概念就已经足够了。 这5种值类型我总结了一张表格,如下: 首先这几个名词用来形容一个表达式,在C++中,一切表达式都必然属于左值、将亡值、纯右值中的一种。而右值=将亡值+纯右值,所以我们又可以说一切C++表达式都必然要么是左值要么是右值。

茶佬牛逼 857

C++20标准下的左值与右值

本文介绍了C++20标准下的左值与右值

hubing_hust的专栏 6210

error C2106: “=”: 左操作数必须为左值

这是我的错误代码 #include<stdio.h> #include<stdlib.h> void main() { //三目运算 int l_v1 = 10; int l_v2 = 100; int l_v3 = 0; l_v2 > l_v1 ? l_v3 = l_v1 : l_v3 = l_v2; printf("%d\n",l_v3); sys...

大_奶瓜的博客 1万+

理解C++中的左值和右值

Attention:this blog is a translation of https://www.internalpointers.com/post/understanding-meaning-lvalues-and-rvalues-c ,which is posted by @internalpoiners. 一、前言 一直以来,我都对C++中左值(lvalue)和右值(lvalue)的概念模糊不清。我认为是时候好好理解他们了,因为这些概念随着C++语言的进化变得越来越重要。 二、左值和右值—

bensam的博客 1506
上一篇: sizeof()和.length()
下一篇: 函数指针和指针函数
CHF_VIP
博客等级 码龄14年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值