C++ 我的for语句不断重复,即使我设置了限制?
我的for语句不断重复,即使我设置了限制?(对不起,我对这一点完全陌生)我不知道如何避免它永远重复。即使我设定的条件不满足,它也会熄灭,这应该发生吗C++ 我的for语句不断重复,即使我设置了限制?,c++,macos,C++,Macos,我的for语句不断重复,即使我设置了限制?(对不起,我对这一点完全陌生)我不知道如何避免它永远重复。即使我设定的条件不满足,它也会熄灭,这应该发生吗 // Garbage Collection #include <iostream> #include <cmath> using namespace std; int main() { double reg, glass, met; double total; double reg_ratio, glass_
// Garbage Collection
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double reg, glass, met;
double total;
double reg_ratio, glass_ratio, met_ratio;
cin >> reg;
cin >> glass;
cin >> met;
total = met + glass + reg;
cout << "The total number of bags is " << total << endl;
met_ratio = met / total;
reg_ratio = reg / total;
glass_ratio = glass / total;
cout << "The metal ratio is " << met_ratio << endl;
cout << "The glass ratio is " << glass_ratio << endl;
cout << "The regular ratio is " << reg_ratio << endl;
if (met==reg==glass) {
cout << "All garbage amounts are the same." << endl;
}
else if (reg > glass && met) {
cout << "Regular is the largest." << endl;
}
else if (glass > met && reg) {
cout << "Glass is the largest." << endl;
}
else if (met> glass && reg) {
cout << "Metal is the largest." << endl;
}
for (reg >= 50; reg+reg;) {
cout << "I can't take anymore." << endl;
}
return 0;
}
//垃圾收集
#包括
#包括
使用名称空间std;
int main(){
双reg,玻璃,met;
双倍总数;
双折射率、玻璃折射率、金属折射率;
cin>>reg;
cin>>玻璃;
cin>>大都会;
总计=met+玻璃+注册;
cout这不是for
的工作方式。它是:
for (initial statement; condition; iteration operation)
initial语句
执行一次,在循环的第一个条目上,只要条件
为真,循环就会执行,并且每次迭代都会执行操作
在您的情况下,初始语句是reg>=50
,它不起任何作用,条件是reg+reg
,只有当reg+reg
以某种方式计算为false
,并且没有操作时,它才会为false
reg+reg
不会修改reg
请注意。您正在寻找的操作可能是reg+=reg
这不是for
的工作方式。它是:
for (initial statement; condition; iteration operation)
initial语句
执行一次,在循环的第一个条目上,只要条件
为真,循环就会执行,并且每次迭代都会执行操作
在您的情况下,初始语句是reg>=50
,它不起任何作用,条件是reg+reg
,只有当reg+reg
以某种方式计算为false
,并且没有操作时,它才会为false
reg+reg
不会修改reg
请注意。您要查找的操作可能是reg+=reg
for(初始化;条件;增量代码)
是for循环的工作方式(注:所有三个部分都是可选的)。如果条件
为真
,它将继续循环。您将其混合在一起,并将其作为(条件;增量代码;*空*)
的写入。请注意,您的条件似乎是相反的。此外,您的增量部分实际上没有更新reg
,您将其添加到自身并丢弃结果
正确的代码是
for(; reg <= 50; reg += reg)
首先,请在二进制操作周围留出一个空格。接下来,这将只测试reg
是否大于glass
,以及met
是否为非零值。要测试reg
是否既大于glass
又大于met
,必须明确执行两次:
if(reg > glass && reg > met)
我可以推荐吗?for(初始化;条件;增量代码)
是for循环的工作方式(注意:所有三个部分都是可选的)。如果条件为true
,它将继续循环。您将其混合在一起,并将其编写为for(条件;增量代码;*空*)
。请注意,您的条件似乎相反。此外,您的递增部分实际上并没有更新reg
,您将其添加到自身中,并将结果丢弃
正确的代码是
for(; reg <= 50; reg += reg)
首先,请在二进制操作周围留出一个空格。接下来,这将只测试reg
是否大于glass
,以及met
是否为非零值。要测试reg
是否既大于glass
又大于met
,必须明确执行两次:
if(reg > glass && reg > met)
我可以推荐吗?其他用户报告的内容是正确的:您编写的for
语句永远不会结束,也不会更改任何变量。为您提供了编写for
语句的正确方法
if (reg >= 50) {
cout << "I can't take more." << endl;
}
我想补充的是,for
-循环的应该包含在条件为真时需要执行的指令。在您的情况下,您正在执行的指令似乎是针对条件不再为真时执行的指令。如果您只想在变量高于某个值时编写消息,则应该使用if
声明
if (reg >= 50) {
cout << "I can't take more." << endl;
}
if(reg>=50){
cout其他用户报告的内容是正确的:您编写的for
语句永远不会结束,并且不会更改任何变量。为您提供了编写for
语句的正确方法
if (reg >= 50) {
cout << "I can't take more." << endl;
}
我想补充的是,for
-循环的应该包含在条件为真时需要执行的指令。在您的情况下,您正在执行的指令似乎是针对条件不再为真时执行的指令。如果您只想在变量高于某个值时编写消息,则应该使用if
声明
if (reg >= 50) {
cout << "I can't take more." << endl;
}
if(reg>=50){
难道你没有设置限制,为
循环查找的语法。你没有设置限制,为
循环查找的语法。啊,谢谢,现在有意义了,而且任何建议都会很好!@Mike:希望你注意到“一本好书”部分是由专业C++程序员维护的推荐书目的链接。))谢谢,现在有意义了,当然任何建议都很棒。一部分是由专业C++程序员维护的推荐书目链接。谢谢!简单的错误,很高兴你能帮我。条件<代码> ReG+Reg <代码>将评估为<代码> Rebug < /代码>如果<代码> ReG> <代码>是代码> 0 < /代码>;谢谢!简单的错误,很高兴你能帮助我。条件>代码> ReG+Reg < /代码>如果reg
为0.0
;则计算为false
)