关于C语言中自增和自减运算符的使用及注意事项

2023-05-16

++是自增运算符,是单目运算符,其作用是使单个变量的值增1。它有两种使用情况:
1)前置:++i,先执行i=i+1,再使用i值;
2)后置:i++,先使用i值,再执行i=i+1。
例如:
j=3; k=++j;
执行“k=++j”语句后,k=4,j=4。上述语句等效为:
j=3; j=j+1; k=j;
再如:
j=3; k=j++;
执行“k=j++”语句后,k=3,j=4。上述语句等效为:
j=3; k=j; j=j+1;


--是自减运算符,是单目运算符,其作用是使单个变量的值减1。它有两种使用情况:
1)前置:--i,先执行i=i-1,再使用i值;
2)后置:i--,先使用i值,再执行i=i-1。
例如:
j=3; k=--j;
执行“k=--j”语句后,k=2,j=2。上述语句等效为:
j=3; j=j-1; k=j;
再如:
j=3; k=j--;
执行“k=j--”语句后,k=3,j=2。上述语句等效为:
j=3; k=j; j=j-1;


注意:
1)自增和自减运算符,只能用于变量,不能用于常量和表达式。例如5++,--(a+b)等都是非法的。

也可用在指针变量中,使指针向上或向下一个地址。


2)表达式k=-i++等效于k=(-i)++还是k=-(i++)因为负号运算符和自增运算符优先级相同,哪一个
正确就得看结合方向。自增、自减运算符及负号运算符的结合方向是从右向左。因此,上式等效于
k=-(i++);若i=5,则表达式k=-i++运算之后k的值为-5,i的值为6。此赋值表达式的值即为所赋的
值-5。不要因为k=-i++等效于k=-(i++)就先做“++”运算!这里采用的是“先用后变”,即先拿出i

的值做负号“-”运算,把这个值赋给变量k之后变量i才自增。


3)C语言允许在一个表达式中使用一个以上的赋值类运算,包括赋值运算符、自增运算符、自减运
算符等。这种灵活性使程序简洁,但同时也会引起副作用。这种副作用主要表现在:使程序费解,
并易于发生误解或错误。
main( )
{
int i,j;
   i=3; 
j=(i++)+(i++)+(i++); 
printf(“\nj=%d,”j);
   i=3; 
printf(“j=%d”,(i++)+(i++)+(i++));

在TC3.0上运行,其结果则是:j=9,j=12,究其原因,“先用后变,先变后用“中的“先”和“后”是一个模糊的概念,很难给出顺序或时间上的准确定论。“先”到什么时候,“后”到什么程度?没有此方面的详细资料可供查询。克服这类副作用的方法是,尽量把程序写得易懂一些,即将费解处分解成若干个语句。如:k=i+++j:可写成k=i+j:i++:而类似(i++)+(i++)+(i++)这类连续自增、自减的运算最好不要使用,以避免疑团的出现,同时也可减少程序出错的可性能。

因此,在C程序设计中,要慎重使用自增、自减运算符,特别是在一个表达式中不要多处出现变量的自增、自减等运算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于C语言中自增和自减运算符的使用及注意事项 的相关文章

  • vue 自定义全屏组件

    1 FullScreen vue lt template gt lt span class 61 34 full screen 34 64 click 61 34 toggleFullScreen 34 gt lt span gt lt t
  • 企业微信小程序开发者登录结果不对问题

    1 调试 微信开发工具调试企业微信小程序 下载企微插件 设置 gt 扩展设置 gt 模拟器插件 gt 企业微信小程序模拟器 更改运行模式 选择企业微信小程序模式 2 账号 由于微信开发工具只能使用微信扫码登录 xff0c 所以必须使用登录微
  • python提取pdf表格数据并保存到excel(从0到1)

    win11安装python python org 下载安装包 xff08 64位操作系统 xff0c 所以选了3 7 4 windows x86 64 executable installer下载并安装 xff09 win 43 r 打开c
  • 0 Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by se

    nodejs连接mysql8 0 32版本报错 xff1a 0 Error ER NOT SUPPORTED AUTH MODE Client does not support authentication protocol request
  • git基本命令

    1 克隆服务器上的项目 git clone http 2 设置Git git config global user name 34 your username 34 git config global user email your ema
  • 推荐WPF的好书

    WPF好书榜 注 xff1a 以前发过一篇博文 WPF技术书籍之个人排行榜 xff0c 时隔大半年 xff0c 我又看了一些 xff0c 现向大家推荐一下其中的好书 这几本书我从头到尾都看过 xff0c 其中的示例也都一一运行分析过 xff
  • angularjs设置请求头信息

    本文部分转自 xff1a http blog csdn net magiclr article details 49643277 最近开发中遇到一个问题 xff0c 需要在模块A发出的请求头信息中添加token属性 如图所示 xff1a 简
  • angularjs 正则判断用户输入的内容只能是数字或者字母

    lt input span class hljs keyword class span 61 span class hljs string 34 form control 34 span placeholder 61 span class
  • echarts 力导向图

    首先放上大佬文章链接 xff1a http blog csdn net u010430471 article details 52955131 https www cnblogs com koala2016 archive 2016 12
  • echarts力导向图区分鼠标点击事件与拖拽事件(angularjs)

    使用echarts的力导向图做了一个知识图谱 xff0c 要求点击节点的时候 xff0c 把节点的数据作为关键词搜索 知识图谱 xff0c 以前没做过 xff0c 也不知道用什么好 xff0c 百度了一下看到有人说用echarts可以做 x
  • 2018前端笔试面试题整理

    最近好几个前端的朋友都在换工作 xff0c 根据她们的面试经验整理了一些前端笔试面试题 毕竟人少 xff0c 面的公司也少 xff0c 所以并不全面 开放性题目 xff1a 1 你在现在的团队处于什么样的角色 xff0c 起到了什么明显的作
  • docker容器网络

    在安装docker时 xff0c 会自动在host主机上创建三个网络 xff0c 用docker network ls可以进行查看 xff1a docker network ls NETWORK ID NAME DRIVER SCOPE b
  • IOS开发入门(11)-导航控制器(1)

    IOS开发入门 xff08 11 xff09 导航控制器I xff1a 层级结构和标签 前言 xff1a xff08 直接从书上抄的 xff09 大多数应用程序是由主视图导出多个屏幕 xff0c 并且通常情况下实现屏幕切换的方法还不止一种
  • IOS开发入门(12)-表视图I:基础知识

    IOS开发入门 xff08 12 xff09 表视图I xff1a 基础知识 在前面几部分中 xff0c 主屏幕只能展示一个汽车对象的信息 而在实际iOS中 xff0c 一次显示多条数据并实现滚动查看是十分常见的 xff0c 例如通讯录 音
  • C语言基础专题 - 头文件引用

    C语言基础专题 头文件引用 jcLee的个人博客 xff1a https blog csdn net qq 28550263 spm 61 1001 2101 3001 5343 邮箱 xff1a 291148484 64 163 com
  • Vue3 配置代理和使用全局axios请求数据

    更详细请参考 xff1a https blog csdn net qq 28550263 article details 120633610 vue3中配置全局代理和使用axios向服务器请求数据 main ts span class to
  • ros(13):ros找不到包报错及解决办法--Config.cmake

    目录 一 基础包 1 1 rospy包 1 2 tf包 1 3 grid map包 1 4 serial 二 专有包 2 1 dynamic reconfigure包 2 2 rosparam handler包 2 3 qt build包
  • 使用Java实现高效的字符串匹配算法

    摘要 xff1a 字符串匹配是计算机领域中的一个重要问题 xff0c 有着广泛的应用场景 在本篇博客文章中 xff0c 我们将介绍几种高效的字符串匹配算法 xff0c 并给出使用Java语言实现的代码示例 xff0c 希望能对读者理解和应用
  • WebDAV是什么

    WebDAV学习及使用 WebDAV是什么WebDEV怎么用各个设备连接1 Window2 MAC WebDAV是什么 基于Web的分布式编写和版本控制 xff08 WebDAV xff09 是超文本传输协议 xff08 HTTP xff0

随机推荐

  • 【计算机基础】整数的补码表示及负整数的左右移

    作者 xff1a LogM 本文原载于 https segmentfault com u logm articles xff0c 不允许转载 文章难免有错误之处 xff0c 请在原文评论处指出 1 补码的表示形式 计算机中整数用补码表示 举
  • Linux 获取内存页大小

    如何查看Linux系统的内存页大小 xff1a 1 getconf PAGESIZE PAGE SIZE 返回值单位为Bytes 点击 此处 折叠或打开 root 64 localhost nginx 1 8 0 getconf PAGES
  • Linux C++服务端开发教程(四) 内存泄露检查

    如何知道内存泄漏 我们如果不去特意查内存泄漏 xff0c 实际上是很难发现的 xff0c 因为这个程序即使发生内存泄漏 xff0c 他也不会有任何特征 泄漏速度不是很快 xff0c 知道某一天 xff0c 我们发现系统运行变慢了 xff0c
  • ubuntu18.04 docker开启2375远程端口

    docker开启2375端口 查询docker服务 查询docker服务 systemctl status docker service 可以看到 docker service 在 etc systemd system 目录下 xff0c
  • 【银河麒麟V10】【服务器】最小化系统安装桌面环境

    1 先制作本地镜像源 本地镜像源搭建方法可参考 xff1a 麒麟V10服务器搭建本地镜像源 https mp csdn net mp blog creation editor 120703047 2 安装桌面环境 yum grouplist
  • 第三方登录之数据库设计

    第三登录之数据库设计 现在很多网站和应用都会接入第三方登录来减少用户注册 xff0c 即方便又快捷 比如说qq登录 xff0c 微信 xff0c 新浪微博等方式 关于第三方登录数据库设计 xff0c 涉及到2张表的设计 xff0c 一张用户
  • 51单片机的定时器/计数器

    7 2 2 定时器 计数器的结构 51单片机的定时器 计数器结构如图7 7所示 T0由特殊功能寄存器TH0 TL0构成 T1由特殊功能寄存器TH1 TL1构成 T0 和T1都具有定时器和计数器两种工作模式 xff0c 4种工作方式 xff0
  • 汇编指令控制单片机LED灯

    一 点亮LED灯 简单的对P1口进行操作就可以了 代码 xff1a ORG 0000H AJMP MAIN ORG 0100H MAIN MOV P1 0FEH 点亮LED1 AJMP MAIN END 二 延时控制流水灯 延时程序生成 x
  • <数据结构> 顺序表

    目录 一 顺序表介绍 二 准备工作 1 创建顺序表 2 初始化顺序表 3 检测是否需要扩容 4 销毁顺序表 5 打印顺序表 三 四大功能 1 增加数据 头插 尾插 指定下标插入 2 删除数据 头删 尾删 指定下标删除 3 查找数据 4 修改
  • Python实现--使用微信定时每天和女友发送定制消息(附代码教程)

    但凡有些事情重复时 xff0c 我就在想怎么可以用程序来自动化 这里想分享如何每天给女友定时微信发送 晚安 xff0c 如果只是晚安 xff0c 就略显单调 xff0c 于是爬取金山词霸每日一句 xff0c 英文和翻译 xff0c 借此设定
  • 容器(ubuntu20.04)开启远程桌面rdp(显示xterm和xclock)(下)

    docker pull chanhyeok sshd ubuntu20 04 root 64 fv az844 904 tmp docker images grep sshd ubuntu20 04 chanhyeok sshd ubunt
  • Python3 函数

    1 函数 1 1函数概念 函数 function 是将具有独立功能的代码块组织成为一个整体 xff0c 使其具有特殊功能的代码集 1 2 函数的作用 使用函数可以加强代码的复用性 xff0c 提高程序编写的效率 1 3 无参数函数语法格式
  • iphone6 修改版本&&iccid解锁

    原创文章 转载请备注 https blog csdn net qq 29173507 article details 104881386 设备 xff1a iphone6卡贴机 IOS12 4 9版本 US SM运营 流程 xff1a 越狱
  • 小米空气净化器2S换pm2.5传感器风扇

    原创文章 转载请备注 https blog csdn net qq 29173507 article details 111466293 设备 小米空气净化器2s 问题 pm2 5的数值显示为0不变 传感器异常 18年年底买了一台净化器 冬
  • vscode插件的使用highlight-words

    highlight words 高亮插件 xff0c 挺好用的 插件管理的搜索框查找并安装该插件即可 插件说明也要看一下哦 原创文章 转载请备注 https blog csdn net qq 29173507 article details
  • c语言程序的编译过程

    操作系统 xff1a ubantu 工具gcc 文件 test c abner 64 DESKTOP M6D2HEN mytest cat test c include lt stdio h gt define MAXC 3 define
  • C语言关键字_record

    重要关键字 涉及流程和单数据类型的关键字 xff0c 功能一般都比较简单 xff0c 在使用过程中很快就会熟悉 下列关键字相对前者来说 xff0c 功能较多 xff0c 值得好好学习 extern 实现外部链接 修饰符extern用在变量或
  • gcc -D选项 宏定义

    用法 Dname 定义宏name 默认定义内容为字符串 1 Dname 61 defn 定义宏name xff0c 并且内容为defn C语言中使用 define来定义宏 xff0c gcc也可以定义宏给源代码使用 不过gcc D选项就简陋
  • 程序员的自我修养--看书总结(更新ing)

    对从事linux平台相关开发的程序员 xff0c 或者是底层编译链接感兴趣的人 xff0c 程序员的自我修养 是很值得看的一本中文书 正如书的副标题 xff0c 链接 装载与库 是主要的内容 挑了书中感兴趣的部分 linux平台相关内容 x
  • 关于C语言中自增和自减运算符的使用及注意事项

    43 43 是自增运算符 xff0c 是单目运算符 xff0c 其作用是使单个变量的值增1 它有两种使用情况 xff1a 1 xff09 前置 xff1a 43 43 i xff0c 先执行i 61 i 43 1 再使用i值 xff1b 2