首页 > 代码库 > if (CONDITION)语句中CONDITION的情况
if (CONDITION)语句中CONDITION的情况
编译环境: Ubuntu 12.04: gcc Windows XP : VS-2005
深入一下if (CONDITION)语句中CONDITION的情况,即CONDITION何时为真,何时是假。
测试代码主体如下:int main(int argc, char *argv[]) { if (CONDITION) printf("true.\r\n"); else printf("false.\r\n"); return 0; }情境1:
CONDITION:
(1) /* true */
(0) /* false */
(-1) /* true */
结论:0为假,非零即真。
情境2:
signed int value1 = 11;
signed int value2 = 328;
CONDITION:
(value1 - value2) /* true - 同[情境1]的第3种情况 */
((value1 - value2) > 2000) /* false */
情境3:
unsigned int value1 = 11;
unsigned int value2 = 328;
CONDITION:
(value1 - value2) /* true - 同[情境1]的第3种情况 */
((value1 - value2) > 2000) /* true */
这里涉及数据类型的“隐式转换”,(value1 - value2)的结果被隐式地转换成unsigned int类型,转换方式是(value1 - value2)的补码
((value2 - value1) > 2000) /* false */
情境4:
int value1 = 11;
unsigned int value2 = 328;
结果同情境3。
数据类型的“隐式转换”,如果其中一个操作数是unsigned int, 则另一个操作数也被视为unsigned int
(value1 - value2) /* true */
((value1 - value2) > 2000) /* true */
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。