当前位置: 首页 > 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 

http://www.lryc.cn/news/546850.html

相关文章:

  • centos7操作系统下安装docker,及查看docker进程是否启动
  • 【向量数据库Weaviate】 和Elasticsearch的区别
  • 深度学习-大白话解释循环神经网络RNN
  • python3.13安装教程【2025】python3.13超详细图文教程(包含安装包)
  • RocketMQ的运行架构
  • SLAM文献之-DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras
  • nano 是 Linux 系统中的一个 命令行文本编辑器
  • JAVA毕设项目-基于SSM框架的百色学院创新实践学分认定系统源码+设计文档
  • Unity3D 刚体动力学(Rigidbody Dynamics)详解
  • 深入理解Spring Cloud Gateway网关原理及使用
  • ESP32+Mixly-WiFi
  • Spring AI:开启Java开发的智能新时代
  • Github-介绍
  • 爬虫系列之【数据解析之正则】《二》
  • 【音视频】视频基本概念
  • 2.4GHZ无线跳频算法 C语言
  • 【leetcode hot 100 56】合并区间
  • Python测试框架Pytest的参数化
  • 4G工业路由器在公交充电桩中的应用与优势
  • 搭建一个简单的node服务,模拟后端接口
  • 高频 SQL 50 题(基础版)_610. 判断三角形
  • 【JQuery—前端快速入门】JQuery 基础语法
  • Springboot整合WebSocket+Redis以及微信小程序如何调用
  • 【前端基础】1、HTML概述(HTML基本结构)
  • 小程序性能优化-预加载
  • (1)udp双向通信(2)udp实现文件复制(3)udp实现聊天室
  • el-table 手动选择展示列
  • 零基础学习之——深度学习算法介绍01
  • 【开源项目】好用的开源项目记录(持续更新)
  • Django:文件上传时报错in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.