C++ 算术表达式是0而不是1 #包括 使用名称空间std; int main(){ INTA、b、c; cin>>a>>b>>c; cout
这是整数除法问题:如果C++ 算术表达式是0而不是1 #包括 使用名称空间std; int main(){ INTA、b、c; cin>>a>>b>>c; cout,c++,C++,这是整数除法问题:如果a==5和b==10,那么a/b==0 参见标准,乘法运算符[expr.mul] 为了 整数操作数/运算符生成代数商,并丢弃任何小数部分 不,没有错 因为所有变量都是整数 在整数世界中,5/10是0,乘以2仍然是0 9/10也是0,但11/10是1 如果希望从中获得有用的信息,请将变量声明为double或IOW: #include <iostream> using namespace std; int main() { int a,b,c; cin &g
a==5
和b==10
,那么a/b==0
参见标准,乘法运算符[expr.mul]
为了
整数操作数/运算符生成代数商,并丢弃任何小数部分
不,没有错
因为所有变量都是整数
在整数世界中,5/10是0,乘以2仍然是0
9/10也是0,但11/10是1
如果希望从中获得有用的信息,请将变量声明为double或IOW:
#include <iostream>
using namespace std;
int main() {
int a,b,c;
cin >> a >> b >> c;
cout << a/b*c;
return 0;
}
intmain(){
双a、b、c;
cin>>a>>b>>c;
cout这是整数舍入的结果。当执行整数除法时,任何分数余数都被简单地截断。因此2/3==0
要使结果保持精确,请在表达式中使用double或将变量转换为double
int main() {
double a,b,c;
cin >> a >> b >> c;
cout << a/b*c;
return 0;
}
static_cast(static_cast(a)/static_cast(b)*static_cast(c))
将得到正确的值。您应该将除法转换为双精度以获得预期结果Tah int为0.5到0是的,我刚刚注意到我是个白痴。如果您想保持整数运算,可以重新排列表达式:c*a/b
。当然,当c*a
不能被b@Chromo-sapiens:不完全正确。您的操作中从来没有0.5
。当您对整数进行除法时,会立即得到一个完整的商和一个提醒。5/10
给出0
商。5%10
给出5
作为余数。
static_cast<int>(static_cast<double>(a) / static_cast<double>(b) * static_cast<double>(c))