|  |      1VYSE      2012-01-19 16:58:59 +08:00 既然是逻辑变量,直接在if后面多合情合理?c里可以==TRUE或==FALSE | 
|  |      2guoxx_      2012-01-19 17:33:41 +08:00 if ( a ) { } if ( ! a ) { } 这样有什么问题么? | 
|  |      3fly2never      2012-01-19 17:37:30 +08:00 关注这个问题. 我现在一般是if(a) if(!a), 如果a是一个表达式,就才采用 if (a == YES) if (a == NO) | 
|  |      4godwarlock OP @guoxx_ 从实现上没问题,但是觉得降低了可读性 | 
|  |      5guoxx_      2012-01-19 17:41:04 +08:00 if(a == YES) if(a == NO) 这样写法 绝对是错误的 int a = 100; if ( a ) 和 if ( a == YES ) 完全是俩码事 | 
|  |      6guoxx_      2012-01-19 17:42:14 +08:00 | 
|  |      7evlos      2012-01-19 18:02:49 +08:00 感觉 YES NO 什么的太奇怪了,读到会蛋疼的,正常情况下应该都用 TRUE FALSE 的吧。 | 
|  |      10fly2never      2012-01-19 18:10:00 +08:00 这篇文章里面写的是不要与'YES'/'NO'比较,也不要和@"YES"/@"NO"比较 http://www.mindsizzlers.com/2010/04/objective-c-and-the-properties-of-bool/ | 
|  |      11fly2never      2012-01-19 18:12:27 +08:00 BOOL b = 37; if (b) { printf("b is YES!\n"); } if (b != YES) { printf("b is not YES!\n"); } 这样的话,b就最好不要直接和YES和NO比较 | 
|  |      12keakon      2012-01-19 19:06:14 +08:00 BOOL类型的变量一般用isXXX、hasXXX的形式来命名,这样if (hasError) {...}的可读性是很好的。 | 
|  |      13qianleilei      2012-01-19 20:23:50 +08:00 有时候 if(!a) 会让我想很久,前两天就是因为少一个!,出了一个bug | 
|  |      15godwarlock OP | 
|  |      16guoxx_      2012-01-20 09:23:33 +08:00 没想到这种问题还有这么多讨论,基本入门的教材都已经写得很清除了 代码翻译到汇编的时候 执行的都是和0比较 BOOL类型不过是objc的扩展 不同于c++的bool类型 if ( a == YES ) 这种写法在任何情况下都强烈不推荐 可读性的问题可以通过变量名解决 | 
|  |      17lldong      2012-01-20 20:07:30 +08:00 有个问题,关于BOOL的类型的问题,楼主说是unsigned int,包括一些书上也是这样说,但是我看运行时API里(/usr/include/objc/objc.h)的声明是: typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. #define OBJC_BOOL_DEFINED #define YES (BOOL)1 #define NO (BOOL)0 | 
|  |      18godwarlock OP @lldong 哦,sorry,这个是我弄错了 |