为什么代码不能返回正确的值?
Why the code can't return right value?
刚开始学习C++,下面的代码无法返回正确的值。我找不到哪里出了问题,在这里需要一些帮助,谢谢!
const int CM2M = 100;
int main()
{
using namespace std;
int CM;
float M = CM / CM2M + (CM % CM2M) * 0.01f;
cout << "Enter the height in CM: ";
cin >> CM;
cout << "Your in M is " << M << endl;
return 0;
}
cin 操作是在检索值时: 您需要在任何过程之前获取它:
const int CM2M = 100;
int main()
{
using namespace std;
int CM;
cout << "Enter the height in CM: ";
cin >> CM;
float M = CM / CM2M + (CM % CM2M) * 0.01f;
cout << "Your in M is " << M << endl;
return 0;
}
只是为了好玩,也为了教育。如果你想在C++中模拟声明式编程,定义变量之间的关系并在之后"获取更新的值",你可以使用 lambda 来解决这个问题。
const int CM2M = 100;
int main()
{
using namespace std;
int CM;
auto M = [&] { return 1.0f * CM / CM2M + (CM % CM2M) * 0.01f; };
cout << "Enter the height in CM: ";
cin >> CM;
cout << "Your in M is " << M() << endl;
return 0;
}
这实际上是作弊,因为M()
调用 lambda,从而确保在知道值后完成算术。以正确的顺序编写操作要清晰得多。C++还允许您在第一个使用点声明变量,因此您无需提前声明所有变量,您可以在需要声明之前执行代码。所以你会做这样的事情:
const int CM2M = 100;
int main()
{
using namespace std;
int CM;
cout << "Enter the height in CM: ";
cin >> CM;
float M = 1.0f * CM / CM2M + (CM % CM2M) * 0.01f;
cout << "Your in M is " << M << endl;
return 0;
}
我添加了人工1.0f
以确保它不会进行整数除法,这是您代码中的另一个错误。
把 "float M=..."cin>>CM;"行之后的行。现在您正在尝试在输入厘米数之前计算米数,因此结果当然是随机的。
因为 CM 仅在用户有机会初始化之前在公式中声明和使用。
当前的程序流程是这样的:
- CM 被声明
- M 是使用 CM 值计算的(无论此时是什么(
- 用户输入 CM 的值
- 用户看到转换的结果(M 的值(,但它已经计算出来,用户输入实际上并没有 使用。
要修复程序,请在用户输入后移动计算:
cout << "Enter the height in CM: ";
cin >> CM;
float M = CM / CM2M + (CM % CM2M) * 0.01f;
cout << "Your in M is " << M << endl;
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么使用 std::vector 的代码不能编译,但使用 std::unique_ptr 如果没有 noexcept
- 为什么代码不能返回正确的值?
- 为什么我的 C++ 代码不能显示 cout 字符串
- 在一个简单的高峰时间求解器中使用BFS——为什么我的代码不能求解棋盘
- 为什么这段代码不能正常工作???我的意思是,为什么当我运行它时它没有显示任何内容?
- 为什么这个 c++ 代码不能编译?
- 为什么这段代码不能运行?[初级]
- 为什么 C# 代码不能与非托管 DirectX 一起使用
- C++ 在 minGW-W64 g++ 中编译的代码不能使用 Ubuntu g++ 编译
- 不确定为什么代码不能C++简单
- 为什么我的这段代码不能写入文件
- 为什么这段代码不能正常打印数字?
- 为什么这段代码不能用 clang 构建,用 gcc 崩溃,但在 VC++ 上运行良好?
- 为什么这个 c++ 代码不能在 g++ 4.8.2 中编译
- 为什么这个C++代码不能编译
- boost截止日期计时器我的代码不能同时运行
- c++代码不能在Visual Studio中运行
- 为什么这段代码不能工作
- 为什么这段代码不能像我需要的那样快地工作?