精华内容
下载资源
问答
  • C语言自增自减运算

    2017-03-29 14:45:46
    a++是先把数据放在temp空间,然后a的存储空间数再加。而++a则相反。。。。 举例: int a = 4; a += (a++); 首先先执行括号里面的a++,a++是把数据先放在temp空间,然后a的存储空间数++。就是说等号的右边实际上是...

    先从最简单的说起

    a++和++a的区别

    a++是先把数据放在temp空间,然后a的存储空间数再自加。而++a则相反。。。。

    举例:

    int a = 4;

    a += (a++);

    首先先执行括号里面的a++,a++是把数据先放在temp空间,然后a的存储空间数++。就是说等号的右边实际上是一个temp空间

    而不是a这个变量,所以等号的右边此时还是4。但是等号的右边a已变成5了。答案为9

     int a = 4;

    a += (++a);

    首先执行++a,此时a自加变成5,再执行+=,加起来就是10。


            (a++)+= a;

     这道题是错的,为什么呢?因为首先执行(a++)里面的内容,所以等号的左边也就是一个tmp,而不是a。temp = temp + a;

    tmp不是变量,它可以被赋值吗。

    a = 4;

    (++a) += (a++);

    这个是对的,为什么呢?因为++a放到了a中了。也就是5了。再执行a+=(a++);就是11了。


    但是很多情况下编译器的不同,会搞死我们的。。。。。。。。

    a = 3;

    b = (a++)+(a++)+(a++)

    在vc中,我自己没测试过的。。。看了别人的文章的,答案是9,显然的就是先执行+号,然后再自加。

    可是我用linux编译的却不然,答案是12.显然是先自加再进行+号运算。

    c = (++a)+(++a)+(++a)

    又是有两种情况,一种呢,在linux和vc下是等于16.它是先执行第一个++。再执行第二个++。然后执行+号。此时第一个a和第二个a都已经变成5了,5+5等于10,然后存放在tmp空间里,后面的++a,就是等于6,10+6等于16. 有的编译器是直接全部自加完才进行+号,所以就是18.


    现在把printf和自加自减结合起来

    a = 3;

    printf("%d%d%d\n", --a, a++, a--);

    输出是:2 , 2, 3

    因为printf表达式是从右到左执行的,所以先是执行a--,表达式还是等于3,a已变成2,再执行a++,此时表达式a++还是等于2,但是a自身变成3,最后执行--a,就是2

    a = 3;

    printf("%d%d%d%d\n", ++a,--a, a++, a--);

    输出是:3 ,3, 2, 3

    前三个不用说了,到了执行第四个++a前,此时a是2,执行完++变为3,自然的第第二个a变量也为3,那为什么第三个和第四个a没变呢,因为它是表达式啊(tmp空间),

    而不是变量a。

    展开全文
  • 自增自减 ++自增运算符:如a++,++a都等价于a = a + 1; –自减运算符:如a–,–a都等价于 a = a -1; ++a和a++的区别 虽然++a和a++等价的结果一样,但是运算过程不同,a++ 是先使用a的值,然后再对a做加1处理,+...
  • C语言自增自减运算辨析

    千次阅读 2018-04-10 10:46:22
    c语言中,自增(++)和自减(–)运算是很有c语言“感觉”的一种运算符,但是在实际编写中,尤其对初学者或者很久没接触它的,会对它的原理和运算结果产生混淆,接下来做详细辨析。 自增运算(++) 语法为:a++,其...

    文章出自个人博客https://knightyun.github.io/2018/04/10/c-self-plus,转载请申明


    c语言中,自增(++)和自减(–)运算是很有c语言“感觉”的一种运算符,但是在实际编写中,尤其对初学者或者很久没接触它的,会对它的原理和运算结果产生混淆,接下来做详细辨析。

    自增运算(++)

    语法为:a++,其结果与:a = a + 1 一样,也和:a += 1 一样,作用很明显,方便阅读,减小代码量。例如下面的例子,就能看出明显的效果了:

    ((3+a)*sqrt(3)/(a%2))=((3+a)*sqrt(3)/(a%2))+1;
    
    /*简化后*/
    ((3+a)*sqrt(3)/(a%2))++;
    辨析

    自增也可以表示为 ++a它们都能把a 的值加 1,但是两个表达式的值却不同,用一个例子说明:

    #include<stdio.h>
    int main()
    {
        int a = 1, b = 1, a2, b2;
        a2 = a++;
        b2 = ++b;
        printf("a = %d, b = %d, a2 = %d, b2 = %d", a, b, a2, b2);
    }

    输出结果为:

    a = 2, b = 2, a2 = 1, b2 = 2

    其实,a++ 的值为 a 本身,++a 的值为 a+1 后的值。

    也可以按教科书那种记:

    b = a++ 是先赋值后运算,即先 b=a,然后 a++
    b = ++a 是先运算后赋值,即先 ++a,然后 ++a

    自减运算

    自减运算原理和辨析与上面自增运算相似,a-- 等于 a = a -1 ,表达式 a-- 的值为 a ,表达式 --a 的值为 a-1


    技术文章推送

    手机、电脑实用软件分享


    70

    70

    展开全文
  • 深度剖析C语言自增自减运算

    千次阅读 2012-07-25 21:05:05
    C语言的学习中大家都会遇到C语言自增自减运算,很多人多对其运算赶到迷惑,下面通过简单的几分钟的分析让你对自增自减运算了如指掌,不再迷惑。 自增运算符就是++,自减就是--,两个运算相同以自增为例。 自增...

    在C语言的学习中大家都会遇到C语言的自增自减运算,很多人多对其运算赶到迷惑,下面通过简单的几分钟的分析让你对自增自减运算了如指掌,不再迷惑。

    自增运算符就是++,自减就是--,两个运算相同以自增为例。

    自增分为前增运算符和后增运算符,前增就是在计算一个式子之前线对具有前增运算符的变量进行加一,注意是在一个式子计算之前就对变量加一,不管表达式里面有几个几百个括号啥的,不管,看完表达式发现有前增运算符的变量,全部加一,然后再看。后增运算符是在式子计算完成之后,数一下,每个变量有几个后增运算符,就加几就行啦

    比如x=1;c=2;d=3;y=((x++)+(++x))+(++c)+(d++);

    发现有一个x的前增运算符则对x加一变成2,c有一个前增运算符,c变为3,这样y=((2)+(2))+(3)+(3)=10,然后计算变量的值,发现x有一个后增运算符,d有一个后增运算符,因此最后,x=3,c=3,d=4;

    自减运算符和自增的运算是一样。

    总的来说计算带有自增自减运算符的表达式分为三步:

    1、查看式子中所有带有前增或者前减运算符的变量,先把他们的值进行变化。

    2、计算表达式的值(不用理会后增后减运算符)

    3、看所有具有就有后增后减运算符的变量,每个变量具有几个后增后减运算符就进行相应的变化。

    注意:上面的运算顺序是针对变量是整形的即int,如果变量是浮点型则对表达式从右到做依次计算。

    比如:float a=1.0;y=(x++)+(++x)+(x++);

    计算顺序为:

    1、x++,则先取x=1.0,然后x加一,x变为2.0;

    2、++x,先将x加一的3.0,取x=3.0进行计算;

    3、x++,先取x=3.0进行计算,然后x加一;

    因此最后y=1.0+3.0+3.0=7.0,x为4.0.

    展开全文
  • C语言自增自减运算 恶心的问题

    千次阅读 2019-04-08 16:49:51
    c语言中,自增(++)和自减(–-)运算是很有c语言特色(恶心)的一种运算符。 可以按教科书那种记: b = a++ 是先赋值后运算,即先 b=a,然后 a++。 b = ++a 是先运算后赋值,即先 ++a,然后 ++a。 例子: 好好...

    c语言中,自增(++)和自减(–-)运算是很有c语言特色(恶心)的一种运算符。

    可以按教科书那种记:
    b = a++ 是先赋值后运算,即先 b=a,然后 a++。
    b = ++a 是先运算后赋值,即先 ++a,然后 ++a。

    例子:
    在这里插入图片描述

    好好想一下即可。

    注意结合性,从右边到左边。

    自增:后缀:同表达式中Turbo C的情况相同:先统一取值后依次自增,如:

    int a,i=5; a=i+++i+++i++;a=15, i=8.

    1、 在一般表达式中和在函数参数中计算的结果相同(这一点与TurboC环境不同);

    2、 后缀:同表达式中Turbo C的情况相同:先统一取值后依次自增,如:

    int a,i=5; a=i+++i+++i++;a=15, i=8.

    3、 前缀:前两个自增同Turbo C,即依次自增后统一取值,后面的每个自增后即

    取值,如:

    int a, i=5; a= ++i+(++i)+(++i); a=22, i=8.

    4、 前后缀混合的情况:

    (1) 一般情况:表达式中自左向右计算,参数自右向左运算。前缀自增后取值;后缀(或变量)取值依其所处位置而定,有连续多个将统一取值,其自增在语句结束前进行。

    (2) 前后缀各有一个的情况:设int i=5; 由于i++++i应满足交换率与++ii++相同,规定按后者计算故为36。实验2内容4:int i=5;printf("%d,%d\n", --i, i++*++i ); 打印5,36。

    (3) 若i++或++i或两者有多于一个的情况:++i有两个以上在一起时最左边的连续自增同3、,其余每个自增后取值,如:int i=5;

    printf("%d\n%d\n",–i,(++i)+(i++)+(i++)+(++i));打印6和25

    解释:i++的语句的加是在;后才加的
    不妨再在下面打行(i)的输出代码,i是8!!!!
    后缀(或变量)取值依其所处位置而定,有连续多个将统一取值,其自增在语句结束前进行。

    printf("%d\n%d\n",–i,(++i)+(++i)+(++i)+(++i)+(i++));打印8和40

    printf("%d\n%d\n",–i,(++i)+(++i)+(++i)+i+(++i)+(++i)); 打印9和49

    (4) 函数参数中有括号时,括号参数优先计算,其余参数仍自右向左计算,如:

    int i=9,j=8;printf("%d %d\n", (++i, j–), ++i); 打印8 11

    printf("%d %d%d\n", (++i, j–), ++i, i); 打印8 11 10

    (5) 最后i的值等于原值加总自增次数减自减的次数.

    展开全文
  • 导读运算符多操作灵活是C语言的一大特色在诸多的运算符中最容易出错的便是自增自减运算符C语盲允许在一个表达式中使用两个以上的赋值类运算这种灵活性使程序简洁但同时也会带来副作用本文以VC6.0编译系统为标准详解...
  • 自增自减运算符存在于C/C++/C#/Java/Python等高级语言中,它的作用是在运算结束前(前置自增自减运算符)或后(后置自增自减运算符)将变量的值加(或减)一。主要的使用方式就两种,用在操作数前和操作数后,下面...
  • C语言自增自减

    2019-10-13 18:51:18
    设x=5; y=x++*x++; /*先取x的值进行“*”运算,再进行两次 x++。.../*先进行两次x自增1,使x的值为7,再进行相乘运算。y=49,x=7*/ 如何理解A+++B? C规定:左向右取尽可能多的符号组成运算符! ...
  • C语言自增自减运算符详解

    千次阅读 2011-07-26 11:18:54
    自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式: ++i i自增1后再参与其它运算。 --i i自减1后再参与其它运算。 i++ i参与运算后,i的值再自增1。 i-- i参与运算后,i的值再自减1。 在理.....
  • c语言自增/自减运算

    千次阅读 2013-09-11 16:01:37
     //的printf输出函数是至右向左运算输出的  printf("%d\n",++i);//i=13.因为在上一句中有两次i++  printf("%d\n",--i);//i=12  printf("%d\n",i++);//i=12  printf("%d\n",i--);//i=13  printf("%d\...
  • if结构 自增自减自增自减运算符前自增表达式 int num = 1; ++num; 前自增表达式: 在运算时先将自身的值+1, 然后在在取出自身的值作为表达式的结果 后自增表达式int num = 1; num++;后自增表达式: 在运算时先将...
  • 作为一个大一小白,研究考试试题时发现在对指针变量进行自增自减运算时指针变量前面没有加*的作用,代码段如下 void tran(int *p) { int *b,*e,p; b=p;e=p+5; while (b&amp;lt;e) { t=*b; *b=*e;...
  • 自增自减运算

    2020-07-05 19:30:12
    自增自减运算 小胖子正在学习汇编语言,汇编语言里面有自增和自减指令,叫inc和dec指令,其实C语言里面也有自增和自减运算的,即++和—运算,但这些指令或者运算都是有范围的,现在小胖子碰到了很长很长的整数,小...
  • 通过下面一个例子再次体会一下自增自减运算跟其他运算之间优先级的关系。 点击( 此处 )折叠或打开 # include < stdio . h > int main ( void ) {   int ...
  • Problem D: 自增自减运算 Description C语言中有自增运算++、自减运算–,并且可以前置和后置。 编写一个程序:对输入的一个整数a,输出a++、a–、++a、–a的值。 Input 一个整数a,a是很小的整数。 Output 输出为5...
  • java中的++,--操作和c语言的++,--操作的区别
  • 1252 自增自减运算 Description C语言中有自增运算++、自减运算–,并且可以前置和后置。 编写一个程序:对输入的一个整数a,输出a++、a–、++a、–a的值。 Input 一个整数a,a是很小的整数。 Output 输出为5行,第...
  • C语言自增自减

    2019-04-06 22:16:04
    自增自减:即给某个数值型变量加一或减一//形式一: intnum1=1,num2; num2=num1++; //形式二: num2=++num1; /* 两者之间区别在于是先进行自加或自减还是先进行运算,但其最终结果都是一样的,num1的值都会加一; "++"在前...
  • C语言自增自减运算符使用中应注意的问题 王红 摘 要 运算符多、操作灵活是C语言的一大特色。在诸多运算符中,最难理解、最容易出错的便是自增、自减运算符。本文就这两个运算符使用中应注意的...
  • C 自增自减

    2012-03-11 23:53:02
    C语言自增自减运算解释: 相信初学者对于C语言自增自减运算,总是感到迷惑吧,本文将为此问题提供详细解释
  • ++i:先加()1,再放到表达式里运算 i++:先用本身的值算一次,表达式算完了,i再加()1 例子: 碰到先加 值就是本身,等所在的表达式做完出来以后,再给自己加一个。 注意: ++,–运算符只能用于变量,而不能...
  • 关于C语言自增自减

    2015-06-01 14:13:13
    在使用前置自增自减)与后置自增自减)时要注意他们的区别: 前置是先处理自我运算操作,而后置先处理其他操作然后再处理自己运算操作。举一个例子吧!#include <stdio.h>main(){ int i=5; while(--i){ ...
  • c++自增自减运算汇总(经典)

    千次阅读 2013-06-26 13:26:31
    c++自增自減問題  在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。变量i被称为“计数器”,用来记录完成某一操作的次数。C语言为这种计数器操作提供了两个更为简洁的运算符,即++和--,分别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 420
精华内容 168
关键字:

c语言自增自减运算

c语言 订阅