[C]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  */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值