gpt4 book ai didi

objective-c - ios int 到 float 比较总是计算为 true

转载 作者:行者123 更新时间:2023-11-28 19:14:55 27 4
gpt4 key购买 nike

我正在尝试将 CGFloat 与整数值进行比较。根据这个值,执行一个有条件的……相当标准。但是,出于某种原因,这将始终为真。我什至打印出这些值,它们显然小于 800……我尝试了很多不同的组合,最近的组合如下所示,我想也许是比较 float 的大小和基于 int 的大小纯粹基于它的二进制值,所以我尝试了这个冒险的小 Actor 操作......有什么想法吗?

CGPoint textViewPoint = [scroller convertPoint:[textView center] toView:(UIView *)self.view];
NSLog(@"the y coord is %f", textViewPoint.y);

int size = (int)textViewPoint.y;
NSLog(@"the yint %d", size);
//move the main view, so that the keyboard does not hide it.
//if (self.scroller.frame.origin.y >= 0 && textViewPoint.y > 800.0);
if(size > 800);
{
NSLog(@"moving up");

最佳答案

问题是 if(size > 800); 行末尾的 ;,而不是 int 与 float 比较。删除它,一切都应该没问题。

这是因为这个分号被解释为您的 if 语句的主体,这就是当条件为真时执行的 NO-OP 语句。然后,此 if 空主体旁边的其​​余代码位于 if 主体之外,因此无论条件值如何都会执行。这就像你写的一样:

if(size > 800)
{
}
{
NSLog(@"moving up");
}

编译器警告提示

编译器通常会警告您这个错误。确保您在项目build设置(编译器标志 -Wempty-body)中激活了“空循环体”警告:这样下次您犯这个错误时,您将收到有关它的警告,并知道哪里出了问题以及如何解决。

关于objective-c - ios int 到 float 比较总是计算为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12868929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com