由于要准备笔试,所以捡起了好久不看的C语言,运算符优先级真的是挺蛋疼的,这不,今天在那折腾的时候就被一个问题给纠结住了,自己不能解释这种现象,就发到园子里面请教一下大家了。

          int y,r;
          y=3;
          r=0;
          r= 2*y+(++y);
          printf("%d",r);
          return 0;

 

代码其实很简单,我写这个代码主要是想知道++y后的值对表达式中的其他地方的y是不是有影响的,这个代码在CodeBlock中执行的结果是10,由于(++y)其实的结果是4,所以前面用来计算的y的值其实是3,到这里,我就以为++y的值在y自增后在别处是没有影响的。

但是,诡异的事情接下来发生了

我将2*y改成了y

          int y,r;
          y=3;
          r=0;
          r= y+(++y);
          printf("%d",r);
          return 0;
运行的结果竟然是8,这下我就觉得很纠结了,就没了一个乘法,这地方就成了这样么?我觉得这个地方如果和前面要统一的话就应该输出7才对,后来在C#中写了相似的代码,结果是7,但是对于C这个地方的处理确实很疑惑,也发在园子里面看看大家对此的看法。
我的环境是Xp CodeBlock10
 

相关文章:

  • 2022-01-23
  • 2022-03-05
  • 2021-12-15
  • 2022-02-21
  • 2022-12-23
  • 2021-05-04
  • 2022-12-23
  • 2021-12-27
猜你喜欢
  • 2022-02-28
  • 2021-10-07
  • 2022-12-23
  • 2022-02-14
  • 2021-12-07
  • 2021-06-09
  • 2021-08-18
相关资源
相似解决方案