C++ 我是<;N+;1和i<;=N不同?
我以前知道C++ 我是<;N+;1和i<;=N不同?,c++,c,for-loop,comparison,C++,C,For Loop,Comparison,我以前知道Isqrtlreturnlong double在这种情况下,您的假设是: i之间没有差异这仅适用于整数值。由于sqrtl返回long double,如果它是分数,那么对于分数,如果您将原始值与分数和+1进行比较,其中一个整数适合: ! 2 <= 1.5 2 < 1.5+1 !2嗯,iOh。。当我将sqrtl(GCD)转换为(long-long)谢谢时,我发现它工作得很好!我对for-loop有一个误解。。我以为它会隐式转换为非浮动类型。。谢谢@Eureuerung:for
Isqrtl
returnlong double
在这种情况下,您的假设是:
i之间没有差异这仅适用于整数值。由于sqrtl
返回long double
,如果它是分数,那么对于分数,如果您将原始值与分数和+1
进行比较,其中一个整数适合:
! 2 <= 1.5
2 < 1.5+1
!2嗯,iOh。。当我将sqrtl(GCD)转换为(long-long)谢谢时,我发现它工作得很好!我对for-loop有一个误解。。我以为它会隐式转换为非浮动类型。。谢谢@Eureuerung:for循环将比较结果强制转换为int
或bool
。(这就是为什么你不应该问C/C++问题:C和C++有微妙的差别,比如)。@ MsAlter:我认为Eureuerung在谈论比较的右边而不是完整的条件。@ ZBYNEKVYSKOVKSKY-KVR000:for循环可以包含几乎任何表达式作为其条件表达式。子表达式的哪些部分将被强制转换?例如,for(char*p=…;p&&*p;…)
不是一个不寻常的条件表达式。如果N==MAX\u INT\u VALUE
则N+1
溢出,它们是different@csharpfolk在C++中,这将是<代码> InthMax <代码>,而<代码> STD::NoigCixLime::Max()。溢出使INT_MAX+1
未定义,因此您无法再对此进行推理,但N在某些情况下会有所不同。见公认的答案。
! 2 <= 1.5
2 < 1.5+1