当前位置: 首页 > news >正文

printf 与前置++、后置++、前置--、后置-- 的关系

# 前置++和前置--

先看一段代码   

大家是不是认为printf输出的是 

2  3  3 

2  1  1

但是实际输出的是

3  3  3

1  1  1 

 在这两行printf函数代码里,编译器会先计算 ++a 和 --a 的值,然后再  从右向左 开始输出。 

 printf函数中,如果有多个 前置++ 或者 前置-- ,先 从右向左 计算最终的值,再 从右向左 输出最终的值

 printf 函数中,如果 前置++ 与 前置-- 同时存在,会像上面的例子,先 从右向左 按顺序计算出最终的值,再 从右向左 输出最终的值

# 后置++ 和 后置--

先看这段代码

从上面的代码可以得知:

printf函数会从最右边的带有 后置++ 或 后置-- 的代码 开始运行输出,然后再跳到下一个带有 后置++ 或 后置-- 的代码 运行输出,计算出最终的值后再 从右向左 向没有带++或--的代码 输出最终的值.

a = 2;

printf("%d %d %d\n", a++,     a   ,   a++);  

                                 (1) (2) (3)

( 后置-- 和 后置++ 与 后置-- 混合 也是如此)就比较如这个例子:

  •第(3)的 a++ 会先运行输出 2 ,然后加 1 变成 3 ;

  •之后跳到(1)的 运行输出 3 ,然后 加 1 变成 4 ;

  •左边已经没有带有 后置++ 的a,这时候 编译器就会从 最右边开始 向左没有带 操作符的a 输出       最终的值,即 4 ;

  •最终的输出结果就为 3 4 2

# 后置++、后置-- 与 前置++、前置-- 混合

•这里先说 运行法则:前置类型运行不打印;后置类型即打印也运行;无符号类型的和前置类型的等到 从右到左 计算完最终值后打印最终值

用上面的例子来说明

首先,还是从最右边带符号的开始 从右向左 计算 带符号的代码

从第(5)--a 开始计算,先运行 --符 ——> a - 1,计算后 a = 1,因为 --a 是前置类型,这时不输出打印

第(4)a-- 带有符号,是后置类型,先打印前面传来的 1再运行 -- 符 —> a - 1, 计算后a = 0

第(3)++a 带有符号 ,前置类型,先运行 ++符 ——> a = 1, 计算后 a = 1,因为 ++a 是前置类型,这时不输出打印

第(2)a 不带符号跳过它,来到带有符号的第(1)a++,后置类型,先打印前面传来的 1,再运行 ++ 符 —> a + 1, 计算后a = 2

到这我们已经计算出后值类型 :第(4)a--的值 1和第(1)a++的值1了;和最终的值 2 了

接下就输出无符号类型的和前置类型的值,从右到左 打印最终值 2 

相关文章:

printf 与前置++、后置++、前置--、后置-- 的关系

# 前置和前置-- 先看一段代码 大家是不是认为printf输出的是 2 3 3 2 1 1 但是实际输出的是 3 3 3 1 1 1 在这两行printf函数代码里,编译器会先计算 a 和 --a 的值,然后再 从右向左 开始输出。 printf函数中,如果有多个…...

centos7操作系统下安装docker,及查看docker进程是否启动

centos7下安装docker,需要用到的yun命令 (yum命令用于添加卸载程序) 1.设置仓库: yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 2.安装 Docker Engine-Community yum in…...

【向量数据库Weaviate】 和Elasticsearch的区别

Weaviate 和 Elasticsearch 是两种不同类型的数据库,设计目标和应用场景有显著差异。以下是它们的核心区别和适用场景的详细对比: 1. 设计目标与核心能力 维度WeaviateElasticsearch核心能力向量数据库 图数据库(语义搜索优先)全…...

深度学习-大白话解释循环神经网络RNN

目录 一、RNN的思想 二、RNN的基本结构 网络架构 ​关键点 三、RNN的前向传播 四、RNN的挑战:梯度爆炸和梯度消失 问题分析 ​示例推导 五、LSTM:RNN的改进 核心组件 ​网络架构 3. LSTM 的工作流程 4. 数学公式总结 5. LSTM 的优缺点 ​优点 ​缺点 6. LSTM 的…...

python3.13安装教程【2025】python3.13超详细图文教程(包含安装包)

文章目录 前言一、python3.13安装包下载二、Python 3.13安装步骤三、Python3.13验证 前言 本教程将为你详细介绍 Python 3.13 python3.13安装教程,帮助你顺利搭建起 Python 3.13 开发环境,快速投身于 Python 编程的精彩实践中。 一、python3.13安装包下…...

RocketMQ的运行架构

目录 1. 核心组件(1) NameServer(2) Broker(3) Producer(4) Consumer 2. 消息流转流程3. 高可用机制4. 扩展性与负载均衡5.容错机制5. 特殊功能支持6. 典型部署架构总结 RocketMQ 是一款高性能、高可靠的分布式消息中间件,其运行架构设计为分布式、可扩展、高可用的…...

SLAM文献之-DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras

DROID-SLAM 是一种结合深度学习与传统视觉SLAM技术的先进算法,其核心目标是通过端到端可训练的深度神经网络来实现高精度的相机位姿估计和稠密三维重建。与传统SLAM方法不同,DROID-SLAM采用深度学习网络来估计深度信息,提供更高的精度与鲁棒性…...

nano 是 Linux 系统中的一个 命令行文本编辑器

nano 是 Linux 系统中的一个 命令行文本编辑器,用于在终端中直接编辑文本文件。它相比 vi 或 vim 更加简单易用,适合新手操作。 具体解释: 在你给出的命令 sudo nano /etc/nfs.conf 中: sudo:以管理员权限运行命令&a…...

JAVA毕设项目-基于SSM框架的百色学院创新实践学分认定系统源码+设计文档

文末获取源码数据库文档 感兴趣的可以先收藏,有毕设问题,项目以及论文撰写等问题都可以和博主沟通,尽最大努力帮助更多的人! 百色学院创新实践学分认定系统设计与实现 摘 要 本百色学院创新实践学分认定系统是针对目前实践学分认定…...

Unity3D 刚体动力学(Rigidbody Dynamics)详解

引言 在Unity3D中,刚体(Rigidbody)是实现物理模拟的核心组件之一。刚体动力学(Rigidbody Dynamics)是指通过物理引擎模拟物体的运动、碰撞、重力等行为。Unity3D内置了强大的物理引擎,开发者可以通过刚体组…...

深入理解Spring Cloud Gateway网关原理及使用

1、网关简介 网关作为流量的入口,常用的功能包括路由转发,权限校验,限流等。 2、Gateway简介 Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul。相比 Zuul 来说,Spring Cloud Gateway 提供更优秀的性能,更强大的有功能。 Spri…...

ESP32+Mixly-WiFi

#include <WiFi.h> #include <TimeLib.h> #include <NtpClientLib.h>int8_t timeZone 8; // 时区设置&#xff0c;东八区为8 const PROGMEM char *ntpServer "ntp1.aliyun.com"; // NTP服务器地址void setup(){Serial.begin(9600); //初始化串口…...

Spring AI:开启Java开发的智能新时代

目录 一、引言二、什么是 Spring AI2.1 Spring AI 的背景2.2 Spring AI 的目标 三、Spring AI 的核心组件3.1 数据处理3.2 模型训练3.3 模型部署3.4 模型监控 四、Spring AI 的核心功能4.1 支持的模型提供商与类型4.2 便携 API 与同步、流式 API 选项4.3 将 AI 模型输出映射到 …...

Github-介绍

GitHub 是一个基于 Git 版本控制系统的代码托管平台&#xff0c;广泛用于开源项目、团队协作、代码管理等方面。它让开发者能够上传、分享、修改、协作、跟踪代码的更改。 1. GitHub 的基本功能&#xff1a; 代码托管&#xff1a;GitHub 提供云端存储代码的功能&#xff0c;可…...

爬虫系列之【数据解析之正则】《二》

目录 前言 一、正则基本使用 1.1 导包 1.2 接口方法 1.3 换行匹配问题 二、实战案例 完整代码 前言 在爬虫工作中&#xff0c;我们主要会遇到两种类型的文本数据&#xff1a; JSON格式数据 HTML文档数据 对于JSON字符串数据&#xff0c;通常使用Python的字典操作进行键…...

【音视频】视频基本概念

一、视频的基本概念 1.1 视频码率&#xff08;kb/s&#xff09; 视频码率是指视频文件在单位时间内使用的数据流量&#xff0c;也叫码流率。码率越大&#xff0c;说明单位时间内取样率越大&#xff0c;数据流进度也就越高 1.2 视频帧率&#xff08;fps&#xff09; 视频帧率…...

2.4GHZ无线跳频算法 C语言

目录 一、概述 二、2.4GHZ无线调频算法C语言代码 关键点说明: 实际应用注意事项: 一、概述 2.4GHz频段常用在蓝牙、Wi-Fi或者Zigbee这些无线技术中,不同的协议可能有不同的跳频机制。比如蓝牙使用的是自适应跳频,而传统的可能用伪随机序列跳频。 用户可能是在开发自己…...

【leetcode hot 100 56】合并区间

解法一&#xff1a;排序 我们用数组 merged 存储最终的答案。首先&#xff0c;我们将列表中的区间按照左端点升序排序。然后我们将第一个区间加入 merged 数组中&#xff0c;并按顺序依次考虑之后的每个区间&#xff1a; 如果当前区间的左端点在数组 merged 中最后一个区间的右…...

Python测试框架Pytest的参数化

上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不断攀升。 在实际工作中&#xff0c;许多测试用例都是类似的重复&#xff0c;一个个写最后代码会显得很冗余。这里&#xff0c;我们来了解一下pytest.mark.parametrize装饰器&…...

4G工业路由器在公交充电桩中的应用与优势

随着电动公交车的普及&#xff0c;公交充电桩的稳定运行和高效管理是交通营运部门最关心的问题。4G工业路由器凭借其卓越的数据采集和通讯能力&#xff0c;成为实现充电桩智能化管理的关键。 公交充电桩运维管理需求概述&#xff1a; 1.实时性&#xff1a;实时监控充电状态、剩…...

Unity引擎开发过的VR大场景项目网络技术,资源处理及热更新方案的报价大概多少

根据最新的市场招标数据、行业报价案例和技术方案分析&#xff0c;针对VR大场景项目的网络技术、资源处理、热更新方案三大模块的报价&#xff0c;整理如下&#xff1a;一、网络技术方案报价 网络技术方案主要解决多人在线同步、远程渲染、低延迟通信等问题。方案类型技术选型报…...

d-id AI studio会员值得买吗?实测3大核心功能与免费版对比

d-id AI studio会员深度评测&#xff1a;三大核心功能实测与免费版差异全解析 在数字内容创作领域&#xff0c;AI视频工具正掀起一场革命。作为行业新锐&#xff0c;d-id AI studio凭借其独特的面部动画技术&#xff0c;让普通用户也能轻松制作专业级动态视频。但对于已经体验…...

PlayCover如何重塑Mac游戏体验?社交与云服务革新玩法深度解析

PlayCover如何重塑Mac游戏体验&#xff1f;社交与云服务革新玩法深度解析 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover PlayCover作为一款开源的Mac iOS模拟器&#xff0c;通过深度整合Discord社交功…...

3步实现Windows系统极致优化:Win11Debloat专业指南

3步实现Windows系统极致优化&#xff1a;Win11Debloat专业指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改善…...

Claude浏览器扩展漏洞允许通过任意网站实现零点击XSS提示注入

网络安全研究人员披露了Anthropic公司Claude谷歌浏览器扩展中存在的一个漏洞&#xff0c;攻击者只需诱使用户访问特定网页即可触发恶意提示注入。漏洞原理分析Koi Security研究员Oren Yomtov在提供给The Hacker News的报告中指出&#xff1a;"该漏洞允许任何网站静默地向该…...

告别手打公式!用SimpleTex截图转LaTeX+Axmath微调+Typora排版的保姆级教程

数学公式高效处理全流程&#xff1a;从截图识别到专业排版 每次在论文或笔记中插入复杂的数学公式时&#xff0c;你是否也经历过这样的痛苦&#xff1f;反复核对LaTeX代码中的每个括号&#xff0c;调整上下标位置&#xff0c;或是为了一个特殊符号翻遍文档。传统的手动输入方式…...

Workbench与Ls-Dyna中位移与远程位移设置的关键字映射解析

1. 固定支撑的关键字映射与实战配置 在有限元分析中&#xff0c;固定支撑是最基础的边界条件之一。Workbench和Ls-Dyna对固定支撑的实现逻辑完全不同&#xff0c;但最终达到的约束效果是等效的。先看Workbench端的操作&#xff1a;在Mechanical界面右键选择Ls-Dyna环境&#xf…...

实战构建c盘清理桌面应用,快马ai生成可部署完整解决方案

今天想和大家分享一个实战项目&#xff1a;用Python开发一个C盘清理桌面应用。这个工具不仅能解决日常C盘空间不足的烦恼&#xff0c;还具备完整的图形界面和实用功能。最近在InsCode(快马)平台上尝试了快速生成和部署&#xff0c;整个过程特别顺畅。 项目背景与核心功能 开发这…...

OpCore-Simplify:零基础黑苹果配置终极指南,5分钟搞定复杂EFI

OpCore-Simplify&#xff1a;零基础黑苹果配置终极指南&#xff0c;5分钟搞定复杂EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑苹果配置…...

从零上手Neo4j Desktop:CSV数据导入与核心Cypher操作指南

1. Neo4j Desktop环境准备与数据导入 第一次打开Neo4j Desktop时可能会被它的界面搞得有点懵&#xff0c;别担心&#xff0c;我刚开始用的时候也这样。这个工具把数据库管理、浏览器界面和插件都集成在了一起&#xff0c;特别适合新手快速上手。安装过程我就不赘述了&#xff0…...