自加一运算_C语言i++、++i混合运算老手未必全掌握,看了你就明白了

16c39e4acd37920ea0b724d0c88629ee.png

C语言中的自增自减运算符(i++、i--、++i、--i)对于新手来说,通常感到困惑,说来容易算来难,如果涉及到混合运算,更是无法理解。甚至有些学了几年的老手,未必全掌握(也许你忽略了这个问题,笔者相信你的能力)。本文以自增运算符为例(自减运算符机理相同),为读者解惑。一、先谈谈你可能已经掌握的
1、自增运算符不适用于常量或表达式。如果你试图写出诸如2++、(5+6)++、(i+j)++等语句在编译时均会出现错误提示,无法通过编译。2、自增运算符仅适用于变量,如i++、++i等是没有问题的。对于其运算机理,相信对于很多老手都很清楚了。对于新手而言,值得一提,它们最终结果均是实现i=i+1这种计算,但计算顺序是有不同的。记住一点,i++是先取i的值之后再自加;而++i则是先让i自加,再取其值。二、再谈谈你可能困惑的
如果i++、++i参与混合运算,你真的清楚吗?请看下面的例子,你能回答j、k、l、m、n、t的输出值是多少吗?1、例子:
#include <stdio.h>
int main()
{
int i = 3,j=0,k=0,m=0,n=0,t=0,l=0;
j = (i++)+(i++)+(i++);
printf("i=%d,j=%dn",i,j);
i=3;
k = (++i)+(++i)+(++i);
printf("i=%d,k=%dn",i,k);
i=3;
l = (++i)+(++i)+(i++);
printf("i=%d,l=%dn",i,l);
i=3;
m = (i++)+(++i)+(++i);
printf("i=%d,m=%dn",i,m);
i=3;
n=(i++)*(++i)*(++i);
printf("i=%d,n=%dn",i,n);
i=3;
t=(++i)*(++i)*(i++);
printf("i=%d,t=%dn",i,t);
return 0;
}
有些读者可能会说,这还不简单,那就按照上面你讲的i++是先取i的值之后再自加;而++i则是先让i自加,再取其值,这样按照优先级逐步计算就是了,于是就得出以下答案:j=12,k=15,l=14,m=12,n=60,t=100。如果你这样想又错了。以VC++6.0开发环境为例(不同开发环境由于编译原理不同可能会有差异,读者一定要注意),其运行结果为j=9,k=16,l=15,m=13,n=80,t=125,如下图所示。

797939b700f767de4a045fa953dded37.png

程序运行结果2、例程分析
有些读者可能对此结果非常不解,尤其是l和m的操作数只是顺序不同,值为何不一样了。下面我们来分析一下运算机理。在VC++6.0中,表达式按优先级运算前对操作数++i先自增1,而且长表达式是分步计算的,对表达式中还未参与运算的所有操作数i均有影响(已经计算的i不受影响),一边计算一遍确定操作数i的值,整个表达式计算完成后再对i++实现自增。如l的计算,先计算前两项使得两个++i总共自增了两次即i=5,该步计算相当于5+5=10;第二步计算10+(i++),这时取i的值为5参与运算得结果15,最后i++项自增1,使i变为6,完成计算。再比如m的计算,先计算前两项,仅有一个++i,自增1得i=4,即实现4+4=8;第二步计算8+(++i),i自增1得i=5,于是得到结果m=8+5=13,最后i++项自增1,使i变为6,完成计算。其它表达式计算机理相同,请读者验证。三、总结
学编程语言要细心,多编程,多看例程,会逐步提高。
我是“Coc编程”如果你觉得本文有帮助,请关注我,并点赞。有疑问或其它要探讨的问题,请留言,感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络运输层的概述,计算机网络_运输层

运输层协议概述从通信和信息处理的角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时&#xff0c;只有位于网络…

ble 连接成功后找不到服务_闷声发大财的BLE芯片龙头

来源&#xff1a;内容由半导体行业观察&#xff08;ID&#xff1a;icbank&#xff09;原创&#xff0c;作者&#xff1a;邱丽婷&#xff0c;谢谢。你有多久没使用过蓝牙功能了&#xff1f;随着Wi-Fi和快传软件的普及&#xff0c;蓝牙&#xff08;Bluethooth&#xff09;这一每部…

计算机管理关机在哪,电脑点了关机为什么却关不了

近期&#xff0c;一些网友留言说明明电脑已经按照正常步骤关机&#xff0c;但显示屏却关了&#xff0c;但是主机似乎还在运行&#xff0c;这时该怎么办&#xff1f;针对此疑问&#xff0c;下面小编和大家详细说明一下电脑点了关机却关不了的处理方法&#xff0c;感兴趣的用户一…

东北农业大学考研计算机大纲,东北农业大学(专业学位)计算机技术研究生考试科目和考研参考书目...

考研真题资料优惠价原价选择东北农业大学(专业学位)计算机技术教材&#xff0c;也叫东北农业大学(专业学位)计算机技术考研参考书、指定书目等等&#xff0c;是考验专业课复习过程中最重要的资料。考研是一种针对性很强的考试项目&#xff0c;参考书目由报考院校的研究生院制定…

matlab 功率谱密度 汉宁窗_[振动与测试 2] 什么是PSD(功率谱密度)

上接前章&#xff08;数字信号处理的基本概念&#xff09;&#xff0c;今天给大家介绍下振动测试中最常见的一个概念PSD&#xff0c;即所谓的功率谱密度&#xff08;Power Spectral Density&#xff09;,以及其与Autopower&#xff08;自功率谱&#xff09;的区别。自功率谱现在…

gsm模块网站服务器,gsm模块是什么_gsm模块工作原理_gsm模块的应用

描述gsm模块是什么GSM模块&#xff0c;是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上&#xff0c;具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块具有发送SMS短信&#xff0c;语音通话&#xff0c;GPRS数据传输等基于GS…

df添加一行 python_Python为输出的数据绘制表格

在Python开发环境中&#xff0c;输出数据时没有表格、没有对齐&#xff0c;当数据较多的情况下看起来非常的凌乱&#xff0c;估计很多人像我一样为这个事情而烦恼。左图是我在PyCharm开发环境下输出的数据。下面我们通过Python的Texttable模块为数据添加表格框线&#xff0c;对…

echarts 折线上写数值_前端ECharts数据可视化图表案例与介绍

什么是ECharts&#xff1f;ECharts&#xff0c;一个使用 JavaScript 实现的开源可视化库&#xff0c;可以流畅的运行在 PC 和移动设备上&#xff0c;兼容当前绝大部分浏览器(IE8/9/10/11&#xff0c;Chrome&#xff0c;Firefox&#xff0c;Safari等)&#xff0c;底层依赖轻量级…

计算机里的及格率和有优秀率怎么算,excel表格计算优秀及格率的教程

Excel中的优秀率具体该如何计算呢?下面是由学习啦小编分享的excel表格计算优秀及格率的教程&#xff0c;以供大家阅读和学习。excel表格计算优秀及格率的教程计算优秀及格率步骤1&#xff1a;打开EXCEL软件&#xff0c;使用手动创建一些基础数据&#xff0c;如图。完成该函数的…

concat合并的数组会有顺序么_超全的JS常用数组方法整理

前言常用数组方法汇总方法解析1&#xff1a;concat();2&#xff1a;join();3&#xff1a;pop();4&#xff1a;shift();5&#xff1a;unshift();7&#xff1a;reverse();8&#xff1a;sort();9&#xff1a;slice();10&#xff1a;splice();11&#xff1a;toString();12&#xff…

in ms sql 集合参数传递_mybatis从入门到精通,第三篇《动态SQL》,干货满满

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架&#xff0c;你应该能理解根据不同条件拼接 SQL 语句有多痛苦&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号。利用动态 SQL&#xff0c;可以彻底…

保存图像_06 - matplotlib中应知应会numpy存储、交换图像

matplotlib中应知应会numpy存储、交换图像numpy的ndarray是mpl官方推荐的输入数据结构mpl官方推荐绘图时&#xff0c;应以numpy的ndarray数据结构输入数据。虽然有时用pandas中的两个数据结构、python的list等数据结构也可以&#xff0c;但不能保证都能成功。这是因为numpy的nd…

css设置按钮竖直方向居中_如何借助伪元素实现垂直居中?

点击右上方红色按钮关注“小郑搞码事”&#xff0c;每天都能学到知识&#xff0c;搞懂一个问题&#xff01;今天给大家讲一种实现垂直居中的方法&#xff1a;伪元素法(::before/::after)一、vertical-align实现了什么&#xff1f;先来看一下vertical-align实现了什么&#xff0…

九年级数学解方程50道_【初中数学】北师大版九年级上册数学知识点总结

这里整理了一份【初中数学】北师大版九年级上册数学知识点总结其他版本的总结后面会更新资料有点多&#xff0c;建议先收藏完整版资料下载可搜【初中复习资料】回复【399】&#xff08;资料整理不易&#xff0c;可以收藏-转发支持一下吗&#xff09;资料有点多&#xff0c;建议…

小米9私密相册怎么找_“拼藏搜”,手机相册还能这么玩

发朋友圈九图不够看&#xff1f;私密照片不想被轻易看到&#xff1f;照片太多找半天太麻烦&#xff1f;别着急&#xff0c;学会这几招&#xff0c;成为“制片人”。第一招&#xff1a;“拼”成为“制片人”的第一步&#xff0c;当然是制作照片了&#xff01;拼出有feel的图就靠…

idea python工程zip打包_【面试划重点】-- Python常见知识点

分享工作中遇到的python知识点&#xff0c;估计很多人没太留意过这个知识点&#xff0c;但是对巩固很多基本语法和一些python中一些有用的方法很有帮助&#xff0c;工作中的问题我简化说下&#xff0c;大概就是下面需求&#xff1a;有3个python列表&#xff1a;分别是年龄&…

如何固定最小宽度_如何使用更新的HTML和CSS函数创建响应式设计

除了使用媒体查询和现代css布局(如flexbox和grid)来创建响应式网站外&#xff0c;我们还可以做好某些被忽视的事情来制作响应式网站。在本文中&#xff0c;我们将探讨许多可用的工具(围绕html和css)&#xff0c;从响应图像到相对较新的CSS函数&#xff0c;无论我们是否使用媒体…

如何将文件二进制传输至aix服务器,有什么办法把文件从WINDOWS系统中传到AIX中?...

有什么办法把文件从WINDOWS系统中传到AIX中&#xff1f;(2011-12-21 04:19:38)标签&#xff1a;杂谈有什么办法把文件从WINDOWS系统中传到AIX中&#xff1f;我有一台笔记本可以远程登陆170和F85&#xff0c;两台都是AIXV5.2&#xff0c;原来ML是04&#xff0c;想升级&#xff0…

小米手机硬改技术_小米11手机爆料:首发骁龙875 或采用屏下摄像头技术

12月1日高通应该就要公布骁龙875处理器&#xff0c;而对于这颗2021年的旗舰芯片&#xff0c;小米手机必然要抢首发&#xff0c;这也是他们一贯的传统。据最新消息称&#xff0c;小米11手机有望首发骁龙875处理器&#xff0c;不过这款手机预计要在明年3月份左右推出&#xff0c;…

小企业文件打印服务器,小企业云服务器方案

小企业云服务器方案 内容精选换一换在“确认配置”页面&#xff0c;查看云服务器配置详情。如果您对价格有疑问&#xff0c;可以单击“了解计费详情”来了解产品价格。如果您对价格有疑问&#xff0c;可以单击“了解计费详情”来了解产品价格。企业项目该参数针对企业用户使用。…