《斗破CPP》 第叁章(中) ---- 左值右值问题

2023-11-19

《斗破CPP》第叁章将会分成上中下三部分分享给大家,(上)偏向于讲述循环;(中)讲1个中级难度的运算符;(下)偏向于讲解具有强大功能的语句以及控制符。不管有基础还是没基础的小伙伴,都可以重点看看(上)后半部分、(中)前半部分、(下)后半部分小总结

目录

递增运算符和递减运算符

后置递增(减)运算符

前置递增(减)运算符

 在for循环中作为条件的前置与后置

左值和右值

未完待续


递增运算符和递减运算符

我们在上一篇chap0302运用到了 -- 运算符。

后置递增(减)运算符

我们以后置递减运算符有关的程序作为本篇开端:

//chap0308

#include <iostream>

using namespace std;

int main()

{
	int x;

	cout << "倒数。\n";
	do {
		cout << "正整数值:";
		cin >> x;
	} while (x <= 0);

	while (x >= 0)
		cout << x-- << endl;	// 显示x的值并递减
}

对表达式x--进行求值,得到的是递增前的值。如示例,x的值为5,则cout << x-- << endl; 显示的是递增前的值5(当然,显示之后x的值将递减为4)。后置递增运算符的操作跟后置递减运算符一样就不多说了。

前置递增(减)运算符

对表达式--x进行求值,得到的是递增前的值。如示例,x的值为4,则cout << --x << endl; 显示的是递增前的值5(当然,显示之后x的值也为4)。

//chap0309

#include <iostream>

using namespace std;

int main()

{
	int x;

	cout << "倒数。\n";
	do {
		cout << "正整数值:";
		cin >> x;
	} while (x <= 0);

	while (x >= 0)
		cout << --x << endl;	// 显示x的值并递减
}

总结一下:

x++ 将x的值加1,最终生成的是增加前的值
x - - 将x的值减1,最终生成的是减小前的值
++x 将x的值加1,最终生成的是增加后的值。

- -x

将x的值减1,最终生成的是减小后的值。

 在for循环中作为条件的前置与后置

我们来看看下面2个例子,其实它们的作用是完全一样的,跟前置后置没有啥太大关系

for (int i = 0;i < 10;i++)

for (int i = 0;i < 10;++i)

左值和右值

终于来到本篇博客的主要内容啦。在赋值表达式中,既可以放在左边也可以放在右边的表达式称为左值表达式不可以放在左边的表达式称为右值表达式。例如,变量n是左值表达式,而使用二元 + 运算符进行加法运算的n + 2是右值表达式,不可以放在左边。我们通过代码来理解:

//chap0309

#include <iostream>

using namespace std;

int main()
{
	int x = 0;

	++x = 5;				// true:前置形式可以放在左边
	cout << "x的值是" << x << "。\n";

	x++ = 10;				// false:因为后置形式不可以放在左边
	cout << "x的值是" << x << "。\n";
}

我们ctrl+f5一下会发现编译错误,无法运行。通过这个chap0309 我们知道使用前置的++或--运算符的表达式是左值表达式,使用后置的++或--运算符的表达式是右值表达式。

未完待续

很感激阅读到这里的你,《斗破CPP》的精彩并不止于这些,学有余力的小伙伴可以看看下面这些博客,都是有着极多的技巧与干货❤

《斗破CPP》 第壹章 ---- 初窥CPP_施律.的博客-CSDN博客

《斗破CPP》 第贰章(上) ---- 初识分支句_施律.的博客-CSDN博客

《斗破CPP》 第贰章(下) ---- 拿捏运算符与标识符_施律.的博客-CSDN博客

关于时间的函数,让你成为掌控时间的强者:(极力推荐!)关于时间的函数,让你成为掌控时间的强者_施律.的博客-CSDN博客

如果觉得本篇博客对正在学习编程的你有帮助的话,请给施律.多一点的支持与关注!未来的一段时间里施律.将和小伙伴们一起斗破CPP,希望下次的我能为大家奉上更好的博客内容,也希望下次的博客有你
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《斗破CPP》 第叁章(中) ---- 左值右值问题 的相关文章

随机推荐

  • 二阶电路的零状态响应

    二阶电路零状态响应公式推导 下图所示电路在 时电容和电感上储能都为零 即 t 0 时开关闭合 电压源 Us 开始对电路供电 现讨论 时响应的变化规律 电路的 KVL 方程为换路后电路的初始状态为 0 即 这是二阶线性非齐次微分方程 它的解由
  • vue中点击第一次没有触发按钮怎么操作_vue如何触发某个元素的单击事件?

    我来回答一波吧 因为没复习 导致知识点结合不紧密 原生的中 我们的写法是这样的 王蒿大爷 function myFunction document getElementById demo innerHTML Hello World wind
  • 程序员简历应该怎么写?

    说到程序员简历 这两个月 我看过不下10 000份简历 答主不是HR 也不是技术负责人 但是在网站的运营工作中 每天最开心的事情就是研究候选人的简历了 这些人中 有BAT的资深大牛程序员 也有90后程序员小鲜肉 有人到中年的程序员渴望去创业
  • MyBatis参数传入集合之foreach动态sql

    foreach的主要用在构建in条件中 它可以在SQL语句中进行迭代一个集合 foreach元素的属性主要有item index collection open separator close item表示集合中每一个元素进行迭代时的别名
  • 期货反向跟单--交易员的培养问题

    根据我们统计的数据显示 今年做国内期货反向跟单的团队 无论是从赢利金额 稳定性 还是成功概率 都比做国际期货的团队要高 尤其是最近纯碱 焦煤焦炭 PTA 红枣等几个品种的行情 更是频繁拉爆了很多盘手的账户 本文转发自公众号 反跟单交易 转载
  • 【Mysql】Communications link failure,The last packet sent successfully to the server was 0 millisecond

    项目背景是数据库和项目不在同一台服务器下 在启动时 突然遇到以下错误 Exception in thread main com mysql jdbc exceptions jdbc4 CommunicationsException Comm
  • Java图书馆

    io流用的不是很熟练 还有Book类的应用出了点问题 越改越错 从2个错误改到102个QAQ 孩子想哭 问了好多人也没改成 最后勉强成型 而且上个星期内分泌系统出了点小问题 天天往医院跑 开始敲的太晚了 现在要备战期末考 等期末考结束再改改
  • Linux系统编程:多线程交替打印ABC

    引言 分享关于线程的一道测试题 因为网上基本都是Java的解决方法 决定自己写一篇来记录一下线程的学习 问题描述 编写一个至少具有三个线程的程序 称之为线程 A B 和 C 其中线程 A 输出字符 A 线程 B 输出字符 B 线程 C 输出
  • Spring源码深度解析:文章目录

    文章目录 序号 内容 链接地址 1 一 Spring整体架构和源码环境搭建 https blog csdn net wts563540 article details 126686645 2 二 手写模拟Spring https blog
  • Windows server 2016 部署 AD域

    AD域的简单介绍 为什么要使用域 假设你是协会的系统管理员 管理高职部所有的机房 如果你要为每台电脑设置登录帐户 设置权限 比如是否允许登录帐户安装软件 那你要分别坐在所有电脑前一一设置 如果你要做一些改变 你也要分别在这所有电脑上修改 相
  • 【论文解读】NLP重铸篇之Word2vec

    论文标题 Efficient Estimation of Word Representations in Vector Space论文链接 https arxiv org pdf 1301 3781 pdf复现代码地址 https gith
  • mysql出现“ You can't specify target table '表名' for update in FROM clause”解决方法

    You can t specify target table 表名 for update in FROM clause 翻译为 不能先select出同一表中的某些值 再update这个表 在同一语句中 实例 表 result 表studen
  • (java 基础知识) Java打印---javax.print

    package com print import java io import javax print import javax print attribute import javax print attribute standard p
  • 华为OD机试 - 快递运输(Java)

    题目描述 一辆运送快递的货车 运送的快递放在大小不等的长方体快递盒中 为了能够装载更多的快递 同时不能让货车超载 需要计算最多能装多少个快递 注 快递的体积不受限制 快递数最多1000个 货车载重最大50000 输入描述 第一行输入每个快递
  • React Native_综合练习(react-navigation)

    据说 react natvigation是官方推荐使用的 搞不懂为啥官方放弃更新natigator了 所以在上篇文章的基础上使用react natvigation 1 StackNavigator 用来跳转页面和传递参数 2 TabNavi
  • Linux系统移植:Kernel 顶层 Makefile(下)

    Linux系统移植 Kernel 顶层 Makefile 下 继续分析 Linux 内核源码顶层 Makefile 执行过程 一 make defconfig 过程 与 uboot 的顶层 makefile 相同 在编译源码前 要用 mak
  • 解决openai网站拒绝访问的问题,Access denied,You do not have access to chat.openai.com

    解决步骤 清除浏览器的历史纪录数据 尝试更换科学上网节点 开启无痕浏览模式 我通过这三个步骤登录成功了 希望可以帮助到大家
  • F5杯—网络是有记忆的

    0x00 前言 CTF 加解密合集 CTF 加解密合集 0x01 题目 网络有记忆 我也有 所以 我想她了 提示 1 题目既提示 2 flag包括小写字母 单词 下划线 IDEgOChWMyVNM1wtGVhbI1NeMCE0Vy9RHVB
  • scanf函数的读取

    scanf的处理机制 scanf 以删除的方式从缓冲区读取数据 输入设备的数据存储缓冲区 比如键盘 也就是说 scanf从缓冲区读入一个数据项 该数据项在缓冲区中就被清除掉了 而如果scanf需要读取一个数据项 返现缓冲区当前是空的 那么程
  • 《斗破CPP》 第叁章(中) ---- 左值右值问题

    斗破CPP 第叁章将会分成上中下三部分分享给大家 上 偏向于讲述循环 中 讲1个中级难度的运算符 下 偏向于讲解具有强大功能的语句以及控制符 不管有基础还是没基础的小伙伴 都可以重点看看 上 后半部分 中 前半部分 下 后半部分小总结 目录