【发布时间】:2013-07-23 17:16:04
【问题描述】:
我一直想知道以下情况。
让L_1 > L_2 为无符号值(在本例中为size_t)。 A 也属于同一类型。
这个测试是否有效:
if( A > (L_1 - L_2) )
{
// do stuff
}
还是等价于
if( 0 > (L_1 - L_2) - A )
{
// do stuff
}
或
if( 0 < A - (L_1 - L_2) )
{
// do stuff
}
简化为
if(!(A - (L_1 - L_2) ))
{
// do stuff
}
因为一切都是unsigned。最后一件事会尽快A != L_1 - L2“做事”,这不是我想要的。
【问题讨论】:
-
你更了解哪个?
-
!(A - (L_1 - L_2) )!=A > (L_1 - L_2) -
@GrijeshChauhan:为什么?给我一个矛盾的证明。
-
我错了,因为我没读过
L_1 > L_2 be unsigned values,而A也未签名?? -
@GrijeshChauhan:是的,A 未签名
标签: c unsigned comparison-operators inequality