【问题标题】:Assigning an incremented variable分配一个递增的变量
【发布时间】:2018-11-09 12:34:00
【问题描述】:
PORTB = pattern ++;
//The author explains te upper code with the code below
pattern = pattern + 1;
PORTB = pattern;

PORTB = ++ pattern; //That's what I think is right

我认为这段代码是错误的,因为在语句中使用它后,后增量应该加1,所以对于下面的代码,必须有一个前增量e。但是由于我对c/c++不是很熟悉(只看过一本书),所以我想知道是我搞砸了,还是作者错了。

编辑:这本书不是关于 c/c++,而是关于 arduino。

【问题讨论】:

  • 你是对的..
  • 你是对的。解释代码不等同于上面的代码。事实上,pattern ++; 首先使用变量(分配它)然后递增它。
  • 你可能会从扔掉那本书中受益。 We have a carefully curated list of suggestions.
  • 好的,谢谢。这很奇怪,因为我已经发现了这本书的其他一些错误,而它的评价却非常好。
  • 不要相信收视率...我猜。相信专家的建议。

标签: c++ c post-increment pre-increment


【解决方案1】:

你是对的

PORTB = pattern++;

等价于

PORTB = pattern;
pattern = pattern + 1;

【讨论】:

    【解决方案2】:

    前缀形式[--,++]a做动作(递增或递减),然后使用结果

    例如:

      int a[] = {0,1,2};
      int i = -1;
      std::cout<< a[++i] << ' ';
      std::cout<< a[++i] << ' ';
      std::cout<< a[++i] << std::endl;
    

    等价形式

     int a[] = {0,1,2}; 
     int i = -1;
     for(int j =0; j < 3; j = j + 1) {
      i = i + 1; // action first
      std::cout<< a[i] << ' ';
     }
     std::cout<< std::endl; 
    

    后缀形式a[++,--]按原样使用值,然后递增或递减变量

    例如:

      int a[] = {0,1,2};
      int i = 0;
      std::cout<< a[i++] << ' ';
      std::cout<< a[i++] << ' ';
      std::cout<< a[i] << std::endl;
    

    等价形式

     int a[] = {0,1,2}; 
     int i = 0;
     for(int j =0; j < 3; j = j + 1) {
      std::cout<< a[i] << ' ';
      i = i + 1; // action after
     }
     std::cout<< std::endl; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-25
      • 2023-03-09
      • 2018-03-17
      • 2011-11-14
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多