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

[c语言]小课堂 day2

来看一下今天的c语言代码

#include <stdio.h>

int main()
{
    int a = 1;
    int b = 1;
    printf("a : %d\n",a); 		//1
    printf("b : %d\n",b);		//2
    putchar('\n');
    
    printf("a++ : %d\n",a++);	//3
    printf("++b : %d\n",++b);	//4
    putchar('\n');
    
    printf("a : %d\n",a);		//5
    printf("b : %d\n",b);		//6

    return 0;
}

1 2两个printf()十分简单,就是直接打印出a、b两变量的值
也就是
a : 1
b : 1
接下来3 4两个printf()就看不太懂了

如果你见过for语句,你就会发现for语句最后面都会有i++这条语句

int i, n = 10;
for(i = 0; i < n; i++)
{
	;
}

可以知道i++其实就是把i的值进行了+1运算 可以等价看成 下列语句

i = i + 1;

其实for语句里面写把i++改成++i也可以。最终达到的效果都是i的值加了1
因此我们不看3 4的printf(),直接看5 6的printf()先
由于执行了3 4的 a++和++b
那么5 6的printf()输出的ab肯定就是分别加1的值了
也就是
a : 2
b : 2

注意:这样写后面的a = a + 1还是会执行的

printf("%d",a = a + 1);


那么3 4的printf()到底输出啥呢?
我们先看看运行结果
在这里插入图片描述
a++那里输出的还是1 但是++b就输出了2

有点奇怪是吧

a在++前面,输出了a+1之 的值

b在++后面,输出了b+1之 的值

可以总结一下
a++是先返回了一个a然后再执行a = a + 1
++b是先执行了b = b + 1,然后返回 b

形象的理解可以是
i++ 先去忙别的事,再自己加1
++i 先自己加1,再去忙别的事

这样就能解释今天的代码了

接下来我们看看for语句里面一般是i++,那这两个都叫自增运算符,有啥区别呢

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

虽然最后实现的效果都是一样的
但是

从代码上来说,前置++是将变量的值加1后,使用增值后的变量进行运算的。后置++先将变量赋给一个临时变量,然后将变量的值加1,接下来使用临时变量参与运算。

所以总的来说++a会比较快一些

相关文章:

  • Spark实时数仓的项目实现
  • 数据挖掘经典十大算法_K-Means算法
  • JavaScript面向对象
  • 吐血总结 40道Python面试题集锦
  • Go 语言中的基本类型以及变量声明与初始化(Let‘s Go 三)
  • 前端基础01:HTML
  • java计算机毕业设计前台点菜系统源代码+数据库+系统+lw文档
  • QT QString编辑字符串-查询-类型转换操作
  • NFT重构票务系统
  • 国际电工委员会发布标准 IEC 62077:2022 《光纤互连设备和无源元件-光纤环行器-通用规范》
  • vue3.0--3.isRef、toRefs、toRef、readonly,公共数据配置、网络配置、app.use插件配置、路由配置
  • 【python】(十八)python常用第三方库——pymysql
  • 供应水溶性喹啉腈磺酸盐母体,QM-SO3,CAS:1800102-18-4
  • Unity Shader LOD详解
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • 「译」Node.js Streams 基础
  • 2017 年终总结 —— 在路上
  • 4个实用的微服务测试策略
  • C# 免费离线人脸识别 2.0 Demo
  • gf框架之分页模块(五) - 自定义分页
  • HTML中设置input等文本框为不可操作
  • JavaScript对象详解
  • JavaScript异步流程控制的前世今生
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Logstash 参考指南(目录)
  • PaddlePaddle-GitHub的正确打开姿势
  • PHP CLI应用的调试原理
  • Python_网络编程
  • Vue ES6 Jade Scss Webpack Gulp
  • Wamp集成环境 添加PHP的新版本
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 初探 Vue 生命周期和钩子函数
  • 给Prometheus造假数据的方法
  • 记录一下第一次使用npm
  • 理解在java “”i=i++;”所发生的事情
  • 马上搞懂 GeoJSON
  • 探索 JS 中的模块化
  • 学习笔记:对象,原型和继承(1)
  • 一些关于Rust在2019年的思考
  • 整理一些计算机基础知识!
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #android不同版本废弃api,新api。
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #pragam once 和 #ifndef 预编译头
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (BFS)hdoj2377-Bus Pass
  • (java)关于Thread的挂起和恢复
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (实战)静默dbca安装创建数据库 --参数说明+举例