iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中-a++和-++a运算顺序实例解析
  • 795
分享到

C语言中-a++和-++a运算顺序实例解析

c语言中a++和++a怎么算C语言a++c语言中的a++和++a 2022-11-13 19:11:29 795人浏览 安东尼
摘要

目录前言一、首先二、其次补充:下面讲解下3-3的例题最后前言 -a++ ,如果a=3,那么-a++输出的结果是多少? -3还是-4? 一、首先 先来了解一下算术运算符的优先级和结合性

前言

-a++ ,如果a=3,那么-a++输出的结果是多少? -3还是-4?

一、首先

先来了解一下算术运算符的优先级和结合性:

运算符优先级结合性
++、--、+(正)、-(负)同级

^

|

|

右结合
*、/、%同级左结合
+(加)、-(减)同级左结合

右结合*、/、%同级左结合+(加)、-(减)同级左结合

C语言中,计算表达式的值也需要按运算符的优先级从高到低的顺序进行计算。

例如,表达式 a+b*c 相当于 a+(b*c).

若操作数两侧运算符的优先级相同,则按结合性(结合方向)决定计算顺序,

若结合方向为“从左到右”,则操作数先与左边的运算符结合;

若结合方向为“从右到左”,则操作数先与右边的运算符结合;

例如,表达式-a++,- 与 ++ 同级,此时按结合方向决定计算顺序(右结合),相当于 -(a++)。

二、其次

我们来运行一下 -a++ 感受一下:

#include <stdio.h>
 
int main() {
    int a = 3;
    int b = 5;
    printf("%d\n",-a++);
    printf("%d\n",a);
 
    printf("%d\n",-++b);
    printf("%d\n",b);
    return 0;
}

在运行结果出来之前,我们先来猜猜输出结果是怎样的? -4  4 -6  6 ?如果是这样的话大概忘记了++前置和后置了?

运行结果:

使用的编译软件:CLion

~~~结果有疑惑?请看下方解惑~~~

(初学者提示:下图中左边箭头所指即当前程序运行到这一行,运行到当前行时右边会有变量当前取值。)

图1: 此时我们发现 -a++ 中,a的值还是3,这是因为 a++ ,++后置,

所以在这里print 输出结果是-3,

图2:在这第6行运行完后,a++生效,也就是a=a+1,这时候a=4,所以在这里第7行运行print输出的结果是4。

 图3:这里这个b是为了对比-a++的结果的。-++b,意思是 -(++b),++前置,那么我们先b=b+1,这时候b=6,再走-b的输出。也就是print 输出 -6。

 图4:这里输出b,此时我们从第9行时b已经++b,因此b=5+1=6,所以在这里输出为6。

补充:下面讲解下3-3的例题

int a = 100; 最开始时a是100。

打印 a++;  这个printf会打印a++的值,注意是a++表达式的值,看我前面的讲解,a++的值就是a的值,也就是100。 别忘了这语句结束后a的值就会自增1(也就是副作用发生了)。

打印 ++a;  目前a的值为101。现在要打印++a表达式的值,++a的值就等于a+1,所以会打印出102。 此语句后a=101+1=102。

打印 --a;  这次要打印--a表达式的值,同自增一个道理,--a的值等于a-1,所以会打印出101。 此语句后a=102-1=101。

打印 a--;  a--表达式的值就是a的值,所以打印出101。 此语句后a=101-1=100。

打印 a+1;  这表达式与自增无关,只是打印a+1的值,就是101。 对a本身的值没有影响(加法表达式没有副作用)。

打印 a;  这时a的值当然还是100了。

最后

综上,-a++ ,如果a=3,那么-a++输出的结果是-3,运算顺序还是 -(a++),只是++后置,此时a=a+1要在执行完这一行才执行,如果是++前置,那么也就是 -++a 的情况,那么输出的结果就是-4。

到此这篇关于C语言中-a++和-++a运算顺序的文章就介绍到这了,更多相关C语言-a++和-++a运算顺序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言中-a++和-++a运算顺序实例解析

本文链接: https://www.lsjlt.com/news/171015.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中-a++和-++a运算顺序实例解析
    目录前言一、首先二、其次补充:下面讲解下3-3的例题最后前言 -a++ ,如果a=3,那么-a++输出的结果是多少? -3还是-4? 一、首先 先来了解一下算术运算符的优先级和结合性...
    99+
    2022-11-13
    c语言中a++和++a怎么算 C语言a++ c语言中的a++和++a
  • C语言中++a和a++的区别解析
    c语言中++a和a++的区别:++a:先递增a的值,再返回递增后的值。a++:先返回a的当前值,再递增a的值。 C语言中++a和a++的区别解析 理解 C语言中的++a和a++都是单目...
    99+
    2024-04-03
    c语言 a++ ++a
  • c语言中*a和a的区别
    在 c 语言中,a 是指向变量 a 内存地址的指针,而 a 是一个普通变量。a 存储 a 中的值,而 a 存储自身的值。a 通过解引用访问指向的值,而 a 直接访问自身的值。&a...
    99+
    2024-05-02
    c语言
  • c语言中++a和a++的区别
    在 c 语言中,自增运算符 ++a 和 a++ 的区别在于:++a(前置自增):先对变量进行递增,再返回更新后的值。a++(后置自增):先返回变量的原始值,再对变量进行递增。 C 语言...
    99+
    2024-04-27
    c语言
  • c语言中!a和a!的区别
    c语言中,!a和a!的区别在于:!a是逻辑非运算,将真值转为假,假值转为真;而a!是阶乘运算,计算数字a的阶乘。 c语言中!a和a!的区别 直接回答:在C语言中,!a表示逻辑非运算,而...
    99+
    2024-05-02
    c语言
  • 弱类型语言javascript中a,b运算的示例分析
    小编给大家分享一下弱类型语言javascript中a,b运算的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:下...
    99+
    2024-04-02
  • 详解C语言中++a和a++的不同之处
    c 语言中 ++a 和 a++ 有如下差异:++a 是前缀递增,先递增再返回,而 a++ 是后缀递增,先返回再递增。++a 返回递增后的值,而 a++ 返回递增前的值。根据所需的返回值类...
    99+
    2024-04-04
    c语言 语法规则 ++ a++
  • C语言中++a和a++的用法比较
    在 c 语言中,前缀递增(++a)在使用变量前递增其值,而后缀递增(a++)在使用变量后递增其值。 C 语言中 ++a 和 a++ 的用法 在 C 语言中,++a 和 a++ 都是一元...
    99+
    2024-04-04
    c语言 ++ a++
  • c语言中的a++和++a什么意思
    在 c 语言中,a++(后自增)先赋值再增加,而 ++a(前自增)先增加再赋值。 C 语言中 a++ 和 ++a 的含义 在 C 语言中,a++ 和 ++a 是两种操作符,它们会增加变...
    99+
    2024-04-28
    c语言
  • 思考分析Python运算中 a+=b 和 a=a+b是否相等
    目录如题,先上代码a+=ba=a+ba不等于b+ 操作调用__add__方法如题,先上代码 a+=b >>> b = </code><code&...
    99+
    2023-05-14
    Python a+=b a=a+b Python运算
  • C语言经典顺序表实例分析
    这篇“C语言经典顺序表实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言经典顺序表实例分析”文章吧。1、移除元素题...
    99+
    2023-06-30
  • c语言中'a'和&quot;a&quot;的区别
    'a' 和 "a" 在 c 语言中表示不同的字符常量:'a' 是一个字符,而 "a" 是包含一个字符的字符串。它们在类型、存储、用法、语法和示例中都有差异。 单引号 'a' 和双引号 ...
    99+
    2024-05-02
    c语言 字符串常量
  • c语言中运算符的优先级顺序表
    运算符优先级顺序表决定了 c 语言中表达式的执行顺序:最高优先级:括号 ()一元运算符 (++、--、!)、sizeof、&、* (取地址)函数调用 ()、数组下标 []、指针成...
    99+
    2024-04-29
    c语言
  • 深入探讨C语言中++a和a++的差异
    在 c 语言中,++a 和 a++ 的区别在于求值顺序:++a(前置递增):先递增 a,再赋值给 a。a++(后置递增):先将 a 赋值给临时变量,再递增 a。根据赋值顺序和临时变量的使...
    99+
    2024-04-03
    运算符 c语言
  • C语言指针运算实例分析
    这篇文章主要介绍“C语言指针运算实例分析”,在日常操作中,相信很多人在C语言指针运算实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言指针运算实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-30
  • c语言中数组名a和&a的详细介绍
    这篇文章主要讲解了“c语言中数组名a和&a的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c语言中数组名a和&a的详细介绍”吧!先说说a和&a的区别(有三点,...
    99+
    2023-06-17
  • C语言排序算法实例分析
    这篇文章主要讲解了“C语言排序算法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言排序算法实例分析”吧!1、直接插入排序基本思想:当插入第i(i>=1)个元素时,前面的ar...
    99+
    2023-06-29
  • c语言运算符的优先级顺序怎么排序
    c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。理解并正确使用运算符的优先级...
    99+
    2023-08-01
  • C语言中*和&运算符解析与比较
    在c语言中,星号(*)运算符用于解引用指针变量,获取所指向变量的值;地址运算符(&)用于获取变量地址。具体比较如下:解引用指针:*取地址:&指针乘法:*位运算:&...
    99+
    2024-04-03
    c语言 * &amp;amp;
  • C语言运算符的重载实例分析
    本篇内容介绍了“C语言运算符的重载实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写一个Add函数我们先讨论下面代码,并复习前面的内容...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作