c++与c的基本类型的赋值表达式的返回值的区别

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

c++赋值表达式的返回值是赋值号左边的变量的引用,也就是表达式的结果(是一个左值)可以再次放在赋值表达的左边,
而c语言返回的是表达式的值(是一个右值),也就是不可以再次放在赋值表达式左边。
例如:
int a=1, b=2, c=3;
(a=b)=c;
在c++中经过上述运算a=3, b=2, c=3,
而c语言中则会报错(赋值号左边不是左值)。
c++中首先先将进行括号内的运算:将b赋值给a,然后返回括号内的表达式的结果也就是变量a的引用,最后再将c赋值给a;
而在c语言中上述行为会报错,因为c语言赋值表达式的返回值是一个值不是一个变量(是一个右值);
在上述表达式中c语言也会先计算括号内的a=b,但它的返回值是2而不是变量a,所以在执行最后的2=c会报错。
————————————————
版权声明:本文为CSDN博主「危!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73797951/article/details/129614054

C++(03):operator=赋值运算符的返回值 C++赋值运算符的返回值通常为this对象的引用: 之所以这样做,是因为原生类型,比如int型变量允许做这样的操作: 虽然我不太理解,( i = 8 ) = 0;这样操作的意义是什么,不过原生类型确实允许这样的操作。为了让自定义的类型也具备这样的能力,因此要让赋值运算符的返回值为this对象引用: 如果赋值运算符的返回值类型为this对象的常量引用,是无法完成(a1 = 8) = 0;这样的操作的: 注:Effective C++条款10,对赋值运算符的返回值类型之所以为this对象的引用 阅读详情

相关推荐

`计算机知识` `C++` 逗号表达式,括号表达式

1

WChang的博客 999

赋值表达式返回值

赋值表达式返回值 转载自https://blog.csdn.net/Code_Mart/article/details/53212238 赋值表达式返回值表达式左值的引用。 #include <stdio.h> int main() { int a = 1; printf("%d, %d, a = %d\n", (a*=2), (a+=3), a); ...

一叶知秋的博客 5071

C++系列七:表达式

表达式是计算机编程语言中的基本构造块之一,它由运算符和操作数组成,用于执行各种算术和逻辑运算以及计算变量的值。本文章深入探讨了C++中的表达式,并介绍其不同类型、优先级和计算顺序等方面的知识。

聚集机器学习、信息安全 4225

python中正确的赋值语句_python自增自减?赋值语句返回值?逗号表达式

咳咳,直接进入正题吧。自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。熟悉C/C++的小伙伴们都知道,在C/C++中:自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1赋值语句将所赋的值作为该语句的返回值(值传递); 类似 (x = func()) > 0; 的语句会将函数 func(...

weixin_39573512的博客 2749

python自增自减?赋值语句返回值?逗号表达式

咳咳,直接进入正题吧。 自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。 熟悉C/C++的小伙伴们都知道,在C/C++中: 自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1 赋值语句将所赋的值作为该语句的返回值(值传递); 类似 (x = func()) &gt...

dong02084的专栏 1147

c++ 赋值操作符的返回值

赋值操作符的返回值 在进一步了解++a和a++的区别前,先来了解何谓操作符的计算(Evaluate)。操作符就是将给定的数字做一些处理,然后返回一个数字。而操作符的计算也就是执行操作符的处理,并返回值。前面已经知道,操作符是个符号,其一侧或两侧都可以接数字,也就是再接其他操作符,而又由于赋值操作符也属于一种操作符,因此操作符的执行顺序变得相当重要。 对于a + b + c,将先执行a ...

weixin_30830327的博客 530

c语言c++语言区别?和快速掌握基本语法

c语言c++语言区别?和快速掌握基本语法上手一、c语言c++语言区别二、快速掌握基本语法(一)c语言1.程序结构2.基本语法、数据类型、变量和常量、运算符3.结构(判断、循环、函数)4.数组、指针、字符串、结构体4.常用标准库(二)c++语言1.基本语法2.基本的输入输出 一、c语言c++语言区别 c语言是一种结构化程序设计语言,侧重于如何设计一个过程(输入运算到输出),强调算法和数据结构 c++语言是面向对象的语言,侧重于如何构造一个描述问题相对应的对象模型,融入了抽象设计 二、快速掌握基本

展信佳,当你看到这段简介的时候,我“风吹海洋浪”已走马上任CSDN博客平台。我来这只办一件事:致力于将模糊的概念清晰化,技术的语言通俗化,复杂的关系逻辑化,孤岛的知识碎片结构化,让我一心和技术大佬们共同进步,最重要的是!!!!!忘记【你】 1954

C++11 lambda 表达式详解(带例题)

lambda表达式的出现主要是为了解决排序的问题。但我们在C++98中已经有了std::sort函数,为什么还要lambda表达式呢?上面是内置类型的用法,还是很方便的。但是如果待排序元素为自定义类型,需要用户定义排序时的比较规则,就比较复杂。随着C++语法的发展,每次为了实现一个algorithm算法,。因此,在C++11语法中出现了Lambda表达式。上面介绍了lambda表达式的由来,接下来我们仔细研究他的语法吧!

可涵的博客 1431

python自减指令_python自增自减?赋值语句返回值?逗号表达式

标签:链式条件strNPU第一个值传递可见多个优先咳咳,直接进入正题吧。自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。熟悉C/C++的小伙伴们都知道,在C/C++中:自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1赋值语句将所赋的值作为...

weixin_33303537的博客 1150

python逗号表达式_python自增自减?赋值语句返回值?逗号表达式

咳咳,直接进入正题吧。自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。熟悉C/C++的小伙伴们都知道,在C/C++中:自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1赋值语句将所赋的值作为该语句的返回值(值传递); 类似 (x = func()) > 0; 的语句会将函数 fu...

weixin_33670640的博客 1739

C++11之常量表达式(constconstexpr的区别)

C++11标准要求,编译时的浮点数常量表达式的精度必须大于等于运行时的浮点数常量的精度(为了解决浮点数精度丢失问题)。当我们在添加了常量表达式构造函数后就必须要添加非常量表达式构造函数的版本,因为常量表达式构造函数也可用于非常量表达式中的类型构造。所以,在使用这个常量数值创建数组时编译失败,当作枚举成员赋值也编译失败,作为swicth中的case 分支也会编译错误。规定,当声明为常量表达式的模板后,某个该模板的实例化结果不满足常量表达式的要求后,是一个常量表达式,所以编译器进行编译时就会计算出函数的值。

林夕07 1677

在计算机语言中什么是赋值的意思,赋值语句的作用是出赋值

简述c语言赋值语句的作用和用法auto用于说明自动变量,通常不用;volatile(易变的)表示该变量不经过赋值,其值也可能被改变(例如表示时钟的变量、表示通信端口的变量等)。C语言32个关键字[code]auto :声明自动变量 一般不使用double :声明双精度变量或函数int: 声明整型变量或函数struct:声明结构体变量或函数break:跳出当前循环else :条件语句否定分支( ...

weixin_33489093的博客 3896

python 赋值表达式括号_python自增自减?赋值语句返回值?逗号表达式

咳咳,直接进入正题吧。自增自减(++/--),以及赋值语句,还有逗号表达式都是在C/C++中常见的运算符或表达式。熟悉C/C++的小伙伴们都知道,在C/C++中:自增自减(前缀/后缀)运算符将实现对变量值的 加1/减1; 类似 x = 0; ++x;的语句会使最终 x 的值为1赋值语句将所赋的值作为该语句的返回值(值传递); 类似 (x = func()) > 0; 的语句会将函数 fu...

weixin_29858113的博客 633

C++】lambda表达式

请注意,上述代码仅仅是为了讲解Lambda函数的形参列表的语法逻辑,而并不是Lambda函数的一般典型用法,因为上述例子已经违背了匿名函数的初衷—将Lambda函数赋值给了一个具名函数对象sum,这么做毫无意义,如果非要定义一个具名函数的话,那么完全可以直接编写一个普通的函数 sum 来达到此功能。那么,Lambda函数形参列表的典型场景是怎样的呢?Lambda匿名函数被设计为一种对象,这意味着可以将它们作为函数的参数、返回值,有时,那些使用了Lambda函数作为参数、返回值的函数,被称为高阶函数。

qq_62917398的博客 3640

自己曾经的C++笔记【在c盘爆满的时候找到的回忆】

正浮点数: ^ [1 - 9]\d * .\d * | 0.\d * [1 - 9]\d * $ 或 ^ (([0 - 9] + .[0 - 9] * [1 - 9][0 - 9] *) | ([0 - 9] * [1 - 9][0 - 9] * .[0 - 9] + ) | ([0 - 9] * [1 - 9][0 - 9]\d + )(.\d + )?Email地址: ^ \w + ([-+.]\w + ) * @\w + ([-.]\w + ) * .\w + ([-.]\w + ) * $

多方通行8的博客 3128

何为c语言表达式,何为语句表达式,C语言中的语句表达式有什么不同?

何为语句表达式,C语言中的语句表达式有什么不同?答案:1信息版本:手机版解决时间 2019-10-03 17:32已解决2019-10-03 03:57何为语句表达式,C语言中的语句表达式有什么不同?最佳答案2019-10-03 05:26表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。约束变量在表达式中已被指定数值,而自由变量...

weixin_30774813的博客 2217

C++学习】——(六)表达式

C++学习】——(六)表达式 基础 定义:表达式由一到多个操作数组成,可以求值并通常会返回求值结果; 最基本表达式:变量、字面值,通常包含操作符; 操作符特性: 1、接收几个操作数:一元、二元、三元; 2、对类型有要求(可能涉及类型转换); 3、操作数是左值还是右值; 4、结果的类型; 5、结果是左值还是右值; 6、优先级结合性,可用小括号来改变运算顺序; 7、 操作符重载:不改变接收操作数的个数、优先级结合性; 注意:关于操作符优先级问题可以参考以下文档:https://en.cppre

weixin_40620310的博客 1370
上一篇: C++规定
下一篇: C++11-C++17新特性介绍
Computer_Tech
博客等级 码龄3年 573粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值