如何在不使用内置*和/操作数的情况下乘以和除以两个int值。 是否可以使用+和 - 操作数来实现这一目标?
int n1;
int n2;
int product;
cout << "Input 2 numbers you wish to multiply" << endl;
cin >> n1;
cin >> n2;
//perform multiplication operation here
return 0;
谢谢,
答案 0 :(得分:5)
更多标准:
std::multiplies<int> x;
product = x.operator()(n1,n2);
还有std::divides
。
我发布了这个,因为你绝对不能在作业中使用它。 :)
答案 1 :(得分:4)
再次成为for循环
int total = 0;
for (int loop = 0; loop < n1; ++loop) total += n2;
小学数学发生了什么变化?
如果你也想要否定
int loop;
if (n1 < 0) for (loop = n1; loop > 0; loop++) total += n2;
else for (loop = 0; loop < n1; ++loop) total += n2;
答案 2 :(得分:1)
我认为这些数字的值是正数。你可以使用循环。例如
int n1;
int n2;
int product;
cout << "Input 2 numbers you wish to multiply" << endl;
cin >> n1;
cin >> n2;
//perform multiplication operation here
product = 0;
for ( int i = 0; i < n2; i++ ) product = product + n1; // or product += n1;
return 0;
或者你可以使用递归函数。例如(该函数适用于正数和负数)
int GetProduct( int n1, n2 )
{
return n2 == 0 ? 0 : n1 + GetProduct( n1, n2 < 0 ? n2 + 1 : n2 - 1 );
}
product = GetProduct( n1, n2 );
答案 3 :(得分:0)
如果其中一个操作数是2的幂,那么你可以使用位移算子。
x << 1;
将乘以2,
x << 2;
将乘以4等。