为何不进入if语句

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)newIndexPath
{
 int index = m_pListView->getIndex([newIndexPath section], [newIndexPath row]);

 ListItem* pItem = m_pListView->getItem( index );
 if ( pItem->type & CELL_CANNOT_SELECTED )
 {
  //[tableView deselectRowAtIndexPath:newIndexPath animated:YES];
  return;
 }

 if ( pItem->cmd.isEmpty() )
 {
  m_pListView->SendCommand( "select", index, (unsigned int)pItem->pData );
 }
 else
 {
  m_pListView->SendCommand( pItem->cmd, (unsigned int)pItem->pParam, NULL );
 }
}

 

 

 

当程序满足这个条件的时候,程序不会执行if判断中的return语句,为什么呢?

 

 if ( pItem->type & CELL_CANNOT_SELECTED )
 {
  //[tableView deselectRowAtIndexPath:newIndexPath animated:YES];
  return;
 }

 

原因在于编译的时候,编译器把 return语句编译为出栈,返回,所以程序直接进入函数末尾

 

 

 

在Java中,if语句条件判断错误却仍进入语句,可能有以下几种原因: ### 引用类型变量使用`==`比较内容 在判断引用类型变量时,`==`比较的是引用是否相等,即是否指向同一个对象,而是内容是否相等。若要比较内容,需使用`equals()`方法。例如: ```java String s1 = "hello"; String s2 = new String("hello"); if (s1 == s2) { // 这虽然内容相同,但引用同,条件本应成立,但使用了 == 比较引用 System.out.println("s1 == s2"); } ``` 此例中,`s1`和`s2`内容相同,但`==`比较的是引用,它们指向同对象,若期望比较内容,应使用`s1.equals(s2)` [^1]。 ### 逻辑运算符使用错误 逻辑运算符(如`&&`、`||`)使用当会使条件判断结果与预期符。例如: ```java int a = 5; int b = 10; if (a > 3 || b < 5) { // 虽然 b < 5 成立,但 a > 3 成立,使用 || 时只要一个条件成立就会进入语句 System.out.println("条件成立"); } ``` 若期望两个条件都成立才进入语句,应使用`&&`。 ### 条件表达式计算错误 条件表达式中存在计算错误或数据类型问题,会导致判断结果出错。例如: ```java double num1 = 0.1 + 0.2; double num2 = 0.3; if (num1 == num2) { // 由于浮点数精度问题,0.1 + 0.2 结果可能等于 0.3 System.out.println("num1 等于 num2"); } ``` 浮点数计算存在精度问题,比较时应考虑误差范围,可使用`Math.abs(num1 - num2) < 1e-10`来判断是否近似相等。 ### 变量值被意外修改 在条件判断前或判断过程中,变量值被意外修改,会使判断结果与预期同。例如: ```java int count = 5; if (count > 3) { count = 1; // 这虽然 count 值已被修改,但条件判断时 count 为 5,所以会进入语句 System.out.println("count 大于 3"); } ``` 这种情况可能因代码逻辑复杂或多线程环境下变量被其他线程修改导致。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值