[英]An error with Floating Point Exception C++ expression
我是C ++的初学者,尝试获取110之类的数字。我尝试了以下代码,但出现了Floating Point Exception C ++错误。 我不明白哪里出了问题。
int main()
{
int p = 10;
int j = 1;
while(110 % p >=1 || 110 % p ==0){
cout<<110 % p;
j++;
p = p *10;
}
}
任何人都可以更正代码吗?
您的问题是模数是余数,如果您从数学角度考虑正在做的事情是没有意义的。 当您将一个数字除以另一个数字时,有余数或没有余数。 只要有剩余或没有剩余,您就将继续循环。 这导致p上出现整数溢出。
尝试这个:
#include <iostream>
using namespace::std;
int main()
{
// this prints out the digits backwards:
for(int InitialNumber=110;InitialNumber!=0;InitialNumber/=10){
int LastDigit=InitialNumber%10;
cout<<LastDigit<<endl;
}
return 0;
}
输出:
martyn@localhost ~ $ g++ test.cpp -std=c++11
martyn@localhost ~ $ ./a.out
0
1
1
如果您坚持使用算法,则可以这样终止它:
int main()
{
int p = 10;
int j = 1;
while( p < 110*10 ){
cout<<110 % p<<endl;
j++;
p = p *10;
}
}
这将使循环永远停止并溢出P。这将为您提供:
martyn@localhost ~ $ ./a.out
0
10
110
我怀疑不是您想要的,而是只想要第一个数字,因此您需要将输出除以十的前次幂,如下所示:
int main()
{
int p = 10;
while( p < 110*10 ){
cout<<(110 % p)/(p/10)<<endl;
p = p * 10;
}
}
那会给你:
martyn@localhost ~ $ g++ test.cpp -std=c++11
martyn@localhost ~ $ ./a.out
0
1
1
但是我怀疑第一个代码摘录更优雅。 请注意,在所有这些示例中,数字都是从背面打印出来的。 这可能不是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.