自加一运算_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,一经查实,立即删除!

相关文章

西工大计算机学院交流,2017西工大计算机交流+精贵资料

我是今年考得西北工业大学计算机图像与语音处理方向&#xff0c;这一年的考研路走的实在艰辛西工大今年的专业课和以往有了很大的不同&#xff0c;首先就是名词解释的取消&#xff0c;网络和操作系统的难度增大&#xff0c;但如果你仔细研读了历年期末考试题&#xff0c;都能看…

rstp 转hls_将RTSP流转为浏览器播放

最近在工作中接触到了一个需求&#xff0c;需要在网页上进行摄像头的实施直播。经过研究&#xff0c;决定采用FFmpeg转RTSP为RTMP流&#xff0c;然后通过SRS转发为HLS流供浏览器播放。前提条件Linux服务器一台(用于搭建SRS环境)FFmpeg(用于讲RTSP流转为RTMP流)SRS(用于将RTMP流…

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

运输层协议概述从通信和信息处理的角度看&#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;感兴趣的用户一…

foreach lambda写法_Java8新特性之forEach+Lambda 表达式遍历Map和List

这是Java8系列的第二篇&#xff0c;今天来说一下Java8中forEach的简单使用。我们使用对比的方式来看应该会看得更加清楚,更能理解&#xff1a;一、遍历MapJava8之前的方式Map items new HashMap<>();items.put("A", 10);items.put("B", 20);items.p…

吉大计算机学院刘淑芬,刘淑芬-吉林大学计算机科学与技术学院

学术论文&#xff1a;主要代表性学术论文&#xff1a;[1]Chi Meng, Liu Shufen, Hu Changhong. Self-adapting routing overlay network for frequently changing application traffic in content-based publish/subscribe system. Mathematical Problems in Engineering,2014 …

python与机械教育初探_Python公开课-机械学习之手写识别

授课讲师讲师尹强职务高级讲师、项目经理多年互联网开发经验与授课经验&#xff0c;曾参与某知名家具电商网站、车友商城、物流系统的开发设计&#xff0c;善于使用多种技术解决技术问题和优化网站的性能和提高网站速度&#xff0c;开发经验丰富。擅长学习方式的培养和锻炼&…

工业计算机远程控制,基于SOCKET技术的计算机远程控制实现

摘要&#xff1a;时至今日&#xff0c;计算机网络已经成为了人类社会生活中必不可少的组成部分&#xff0c;其中计算机的远程控制系统更是为整个社会的进步起到推动作用。除了在工业自动化生产之外&#xff0c;计算机远程控制系统还广泛的应用于办公、技术支持等方面。在本文中…

efi分区咋移动到c盘里_如何移动的EFI系统分区

如何安全找回丢失数据的方法1. 下载并安装B计划数据恢复软件。2. 运行恢复软件&#xff0c;点击“深度扫描”。深度扫描是绕过文件系统直接从硬盘、U盘、SD卡等设备底层恢复数据&#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…

exec go 重启_如何用 Go 实现热重启

热重启热重启(Zero Downtime)&#xff0c;指新老进程无缝切换&#xff0c;在替换过程中可保持对 client 的服务。原理父进程监听重启信号在收到重启信号后&#xff0c;父进程调用 fork &#xff0c;同时传递 socket 描述符给子进程子进程接收并监听父进程传递的 socket 描述符在…

计算机关闭窗口可以使用alt,禁止使用Alt+F4关闭窗口完整代码

声明&#xff1a;Private Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Long, ByVal bRevert As Long) As LongPrivate Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPositio…

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

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

交换机指定外部DHCP服务器,H3C交换机DHCP服务器设置步骤

H3C交换机DHCP服务器设置步骤一 DHCP服务器设置步骤如下&#xff1a;1)安装好Linux操作系统&#xff0c;我用的发行版本是CentOS 5.2。2)设置服务器的网络参数如下IP地址:192.168.6.7子网掩码:255.255.255.0网关:192.168.6.254DNS:192.168.6.103)安装DHCP服务CentOS和Red Hat …

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…