`
zhouxiaoli521
  • 浏览: 565598 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言自增/自减运算符

阅读更多

看到一个例子关于C语言++/--的例子

main(){ 
    int i=5,j=5,p,q; 
    p=(i++)+(i++)+(i++); 
    q=(++j)+(++j)+(++j); 
    printf("%d,%d,%d,%d",p,q,i,j); 
}

 

我自己算的结果是:18,21,8,8

然后程序输出的结果是:15,24,8,8

结果完全不一样!好吧 我承认 我是用java的语法来算的,我记得java和c关于“++/--”的用法是一样的,以“i++”为例是“先取值在加1”,“++i”是“先加1在取值”;

这让我很费解,于是经过一番查阅,终于有所了解。

写道
C语言允许在一个表达式中使用一个以上的赋值类运算,包括赋值运算符、自增运算符、自减运算符等。这种灵活性使程序简洁,但同时也会引起副作用。这种副作用主要表现在:使程序费解,并易于发生误解或错误。例如,当i=3时,表达式(i++)+(i++)+(i++)的值为多少,各种教材说法不统一:有的认为是9(3+3+3,如谭浩强的《C程序设计》,清华大学出版社,1991);也有的认为是12(3+4+5,如王森的《C语言程序设计》,电子工业出版社,1995)。到底哪一个说法正确呢?不妨看看下面这个程序的运行情况:
  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,究其原因,“先用后变,先变后用“中的“先”和“后”是一个模糊的概念,很难给出顺序或时间上的准确定论。“先”到什么时候,“后”到什么程度?没有此方面的详细资料可供查询。
  为此,笔者用各种表达式上机测试,结果发现当表达式的值作为printf函数的直接输出对象时,“先变后用”和“先用后变”中的“后”就是指++i和i++这一小项运算完之后,如上面程序中最后一个语句中的输出对象:第一个(i++)取出i的值3以后i立即变为4,第二个(i++)取出i的值4以后i立即变为5,第三个(i++)取出i的值5以后i立即变为6,这样输出的结果便是3+4+5这个表达式的值,即12。

 在printf函数中输出的表达式和我预想的结果是一样的,那在其它的地方呢?执行顺序是什么样的?又经过一番查找发现

写道
必须要把握住这样的一条原则:++/一一运算符前置时优先级最大,在参与运算的所有其它运算符运算前运算;后置时的优先级最小,要在所有其它的运算符执行完毕后再来运算它。

 这样我就能理解p=(i++)+(i++)+(i++)为什么等于15 因为是后置自增运算符,它的优先级最低,所以先执行的是三个i相加,然后才是i的三次自增。

 

究其原因还是因为自己基础不扎实。。

分享到:
评论

相关推荐

    探讨C语言自增、自减运算符的应用.pdf

    "探讨C语言自增、自减运算符的应用" 本文探讨了C语言中自增、自减运算符的应用,详细介绍了自增、自减运算符的作用、操作对象、运算规则和应用实例。 1. 自增、自减运算符的作用和操作对象 C语言中的自增运算符为...

    c语言自增与自减运算符共2页.pdf.zip

    自增运算符(++)将变量的值增加1,而自减运算符(--)则将其减少1。这两种运算符有前缀形式(前置++或前置--)和后缀形式(后置++或后置--),它们在语义上略有不同。 1. 前缀运算符:前置自增(++var)和前置自减...

    Java语言的自增_自减_运算符辨析

    自增运算符`++`可以将变量的值增加1,而自减运算符`--`则将变量的值减少1。这两种运算符都有前置和后置两种形式: - **前置自增/自减**:`++x` 或 `--x`。这种形式会在使用该表达式之前先对变量进行加1或减1的操作...

    试析二级C语言之自增、自减运算符.pdf

    在C语言中,自增运算符有两种形式:前缀形式(++x)和后缀形式(x++)。同样,自减运算符也有前缀形式(--x)和后缀形式(x--)。前缀形式意味着变量在表达式求值之前先增加(或减少)1;后缀形式意味着变量在表达式...

    解析C语言中自增自减运算符.pdf

    解析C语言中自增自减运算符 C语言中自增自减运算符是指在变量的值上进行自增或自减操作的运算符,它们在编程中发挥着重要作用。下面我们将对C语言中自增自减运算符进行详细地解析。 自增运算符 自增运算符可以...

    C语言的自增_自减运算符探析.pdf

    C语言中的自增运算符(++)和自减运算符(--)是程序员必须掌握的两个基础且重要的运算符。自增运算符用于将变量的值增加1,而自减运算符用于将变量的值减少1。在C语言中,这两个运算符只能用于变量,不能用于常量或...

    Java语言中自增、自减运算符解析.pdf

    Java语言中的自增运算符(++)和自减运算符(--)是两个非常基础且独特的运算符,它们在编程中用于递增或递减变量的值。这两个运算符源自C语言,且Java语言中也使用了这两个运算符,并保留了它们的主要特性,但也有一些...

    探讨C语言中自增、自减运算符.pdf

    C语言中的自增运算符(++)和自减运算符(--)是该语言中的特有元素,它们使得变量的值增加或减少1。这两个运算符的使用规则看似简单,但在实际编程中却很容易导致错误。本文将详细讲解自增和自减运算符的用法、运算...

    C语言中自增自减运算符的使用.pdf

    在这些运算符中,自增运算符(++)和自减运算符(--)是单目运算符,它们分别用于将变量的值加一或减一。尽管这个概念看似简单,但在实际编程过程中,这两个运算符经常会导致模棱两可的结果,因此本文详细介绍了自增...

    C语言自增自减运算符深入剖析

    C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:  #include  void main() /*主函数*/  {  int a,b,c,d;  a=5;  b=5;  c=...

    C语言中自增自减运算符的应用与解析.pdf

    首先,自增运算符(++)用于将变量的值增加1,而自减运算符(--)则用于将变量的值减少1。这两个运算符有两种使用形式:前缀形式和后缀形式。在前缀形式下,运算符放在变量之前(例如:++i),在这种情况下,自增或...

    C语言中自增自减运算符在表达式和函数中的应用.pdf

    自增运算符用“++”表示,而自减运算符用“--”表示。这些运算符根据位置可以分为前缀形式和后缀形式,它们在表达式和函数中的应用常常是C语言学习者和开发者难以掌握的语法点。掌握好自增自减运算符的使用,能够使...

    C语言自增(自减)运算符运算规律的探讨.pdf

    C语言中的自增运算符(++)和自减运算符(--)是十分重要的运算符,它们用于将变量的值分别增加或减少1。这些运算符非常简洁并且在代码中使用起来非常灵活,但是,如果使用不当,就可能导致程序的运行结果与预期不同...

    C语言自增自减运算符的解析与应用.pdf

    自增运算符(++)和自减运算符(--)是C语言中极为重要的运算符,它们在编程中承担着变量值增加或减少的职责。这两个运算符的使用,尤其在复合表达式中的使用,是C语言学习者需要重点掌握的内容。在实际编程过程中,...

    关于C语言自增自减运算符的灵活使用.pdf

    一、自增运算符(++) 1. 前缀自增(++x):首先将变量x的值加1,然后返回新值。例如,如果x=5,++x会先将x变为6,然后在表达式中使用这个新值。 2. 后缀自增(x++):先返回变量x当前的值,然后将x的值加1。如果x=5...

    浅析C语言中自增自减运算符的使用问题.pdf

    自增运算符(++)用于将变量值加1,而自减运算符(--)则将变量值减1。这两个运算符在单独使用时与作为复合表达式一部分时的行为存在差异,它们的正确使用对代码的效率和正确性都有着直接影响。本文将深入探讨C语言...

    C语言中自增自减运算符教学探究.pdf

    自增运算符(++)和自减运算符(--)是C语言中的单目运算符,分别用于将变量的值增加1或减少1。这些运算符只能应用于变量,而不能应用于常量或表达式,因为它们需要可修改的内存空间。 自增自减运算符有两种形式:...

    浅谈C语言中自增自减运算符的应用.pdf

    浅谈C语言中自增自减运算符的应用.pdf

Global site tag (gtag.js) - Google Analytics