如果其他条件总是excuting否则不若

如果其他条件总是excuting否则不若

问题描述:

我使用,如果其他人看到的状态,但它始终执行其他如果其他条件总是excuting否则不若

int mytestcount=rowCount; 
NSLog(@"My Test ROw Count IS %d",mytestcount); 


if (mytestcount=0) { 


    NSLog("No Data To Upload"); 

} 


else { 


    [Coffee getInitialDataToDisplay:[self getDBPath]]; 



} 

我,如果是真的,那么也是它excutes别的我不知道为什么,当rowCount时为0

+2

您输入了'mytestcount = 0'而不是'mytestcount == 0' – Eregrith

+4

在发布您的问题之前,请仔细思考和研究,这是相当普遍的一个... :) – IronManGill

+1

这应该给您一个警告, “使用赋值的结果作为没有括号的条件”,如果单击该警告将允许您添加括号或添加==。使用警告有利于您研究您的问题,因为这是基本的编程技巧。 – Popeye

=是赋值运算符,==是比较运算符。 所以,你的代码片段:

  • 将0至mytestcount
  • 使用mytestcount在若条件,并自mytestcount等于0和基于C语言的语言把0作为假的,你如果条件计算结果始终为false,并且始终执行您的else分支

我猜你需要添加另一个等号(=),以便它读取:

if (mytestcount==0) 

int mytestcount=rowCount; 
NSLog(@"My Test ROw Count IS %d",mytestcount); 


if (mytestcount == 0) { 


NSLog("No Data To Upload"); 

} 


else { 


[Coffee getInitialDataToDisplay:[self getDBPath]]; 



} 

检查出来...

您声明(mytestcount = 0)实际上,分配0mytestcount,然后使用mytestcount为布尔表达式,这将永远是假的价值,因为它被赋予的值。

这是一个非常常见的错字,以至于大多数编译器可以检测到这种情况,并在识别出这种模式时会打印警告消息,因为您几乎总是不打算这样做。

您应该考虑使用gcc与-Wall -Werror,如果它看到这些和其他类似错误的常见模式,将导致编译器发出错误。