如何告诉C 9 1应该是1而不是10

How to tell c++ that 9+1 should be 1 and not 10?

本文关键字:何告诉      更新时间:2023-10-16

i有一个10个整数的数组,k是通过数组循环的整数。每当我做'k = k 1'时,将一个添加到'k'中(如果'k'为7,则它变为8)。但是,如果" k"到达9到9,我不希望" k 1"评估为10,我希望它成为1;

我考虑使用这样的函数:

void add_one(int &k){
   if(k == 9){
      k = 1;
   }else{
      k = k+1;
   }
}

,每当我想将一个添加到'k'时:

add_one(k);

然后我发现了操作员的过载,但这很令人困惑,认为必须有更好的方法。我们可以告诉c ,每当看到k 1的k = 9时,它必须返回1而不是10?

您可以使用以下表达式:

k = k % 9 + 1;

您无法更改内置类型的+的含义。如果您编写自己的实例表现为数字的课程,那么您可以使+做您想做的事。

一种方法是只制作一个薄类来包装现有类型的类型:

class mynumber {
  int n;
public:
  mynumber(int n_init) : n(n_init) { }
};

现在,您可以为mynumber编写过载,以及诸如转换操作员等。

关键是超载与类(和枚举)一起工作。

在功能void add_one(int k)中将if(k == 9)更改为if(k >= 9)。删除void add_one(int &k)中的&

#include <iostream>
using namespace std;

void add_one(int k){
   if(k >= 9){
      k = 1;
   }else{
      k = k+1;
   }
   cout<<" k="<<k<<"  n";
}

int main(void)
{
  int k ;
  for(k=0;k<20;k++)  
  {
      cout<<"input "<<k<<" ";
      add_one(k);
  }
  cout<<" nPress any key to continuen";
  cin.ignore();
  cin.get();
   return 0;
}

输出:

input 0  k=1
input 1  k=2
input 2  k=3
input 3  k=4
input 4  k=5
input 5  k=6
input 6  k=7
input 7  k=8
input 8  k=9
input 9  k=1
input 10  k=1
input 11  k=1
input 12  k=1
input 13  k=1
input 14  k=1
input 15  k=1
input 16  k=1
input 17  k=1
input 18  k=1
input 19  k=1
Press any key to continue