如何告诉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