C++ 我认为我的编译器版本是正确的?(在if语句中检测到1和0) #包括 #包括 布尔包含(标准::向量列表,int值){ 对于(unsigned int i=0;i将=与浮点值结合使用几乎所有情况下都是错误的。@t.niese在这种情况下,表示应该是相同的。O
我认为我的编译器版本是正确的?(在if语句中检测到1和0)C++ 我认为我的编译器版本是正确的?(在if语句中检测到1和0) #包括 #包括 布尔包含(标准::向量列表,int值){ 对于(unsigned int i=0;i将=与浮点值结合使用几乎所有情况下都是错误的。@t.niese在这种情况下,表示应该是相同的。O,c++,g++,mingw,mingw32,C++,G++,Mingw,Mingw32,我认为我的编译器版本是正确的?(在if语句中检测到1和0) #包括 #包括 布尔包含(标准::向量列表,int值){ 对于(unsigned int i=0;i将=与浮点值结合使用几乎所有情况下都是错误的。@t.niese在这种情况下,表示应该是相同的。OP执行完全相同的操作两次((double)4/3)您是否有快速数学标志?@Yksisarvinen:4./code>是编译时值,(double)i/j是运行时值。您必须至少知道一个版本,它不会产生预期的结果? #include <iost
#包括
#包括
布尔包含(标准::向量列表,int值){
对于(unsigned int i=0;i将=
与浮点值结合使用几乎所有情况下都是错误的。@t.niese在这种情况下,表示应该是相同的。OP执行完全相同的操作两次((double)4/3
)您是否有快速数学
标志?@Yksisarvinen:4./code>是编译时值,(double)i/j
是运行时值。您必须至少知道一个版本,它不会产生预期的结果?
#include <iostream>
#include <vector>
bool contains(std::vector<int> list, int value){
for(unsigned int i=0; i<list.size(); i++){
if(list[i] == value) return 1;
}
return 0;
}
bool containsdouble(std::vector<double> list, double value){
for(unsigned int i=0; i<list.size(); i++){
if(list[i] == value) return 1;
}
return 0;
}
int main(){
std::vector<int> step = {0};
std::vector<double> value = {};
value.push_back(double(4)/double(3));
int i = 4;
int j = 3;
while(1){
if(contains(step, (0)) && !containsdouble(value, double(i)/double(j))){
std::cout << contains(step, (0)) << " && " << !containsdouble(value, double(i)/double(j)) << " caught on\ni = " << i << ", j = " << j;
return 0;
}
i*=2; j*=2;
}
return 0;
}