请教它们的区别
请问它们的区别? #if (CUSTOMERIZATIONAAA | CUSTOMERIZATIONBBB) #if (CUSTOMERIZATIONAAA || CUST
请问它们的区别?
#if (CUSTOMERIZATION==AAA | CUSTOMERIZATION==BBB)
#if (CUSTOMERIZATION==AAA || CUSTOMERIZATION==BBB)
请问以上二句, 它们的区别?
想实现 或功能 #if ((CUSTOMERIZATION==AAA) or (CUSTOMERIZATION==BBB))
应哪个正确呢?
[解决办法]
个人觉得宏定义应该这样:
#if(CUSTOMERIZATION==AAA
[解决办法]
CUSTOMERIZATION==BBB)
但是按照它这样,编译器也可以成功识别,因为有如下情况:
int i = 1;
int k = 0;
int j = i
[解决办法]
k;//只有都为0时,结果才为0
int s = i
[解决办法]
k;//或也刚好是这样,只有两者都是0时结果才为0
//所以在判断上,1和其它非0值结果都是一样。
[解决办法]如果AAA是5这样的宏的话,那么就没问题
见
http://gcc.gnu.org/onlinedocs/cpp/If.html#If
if只能处理算术表达式来着
至于
[解决办法]还是
[解决办法],逻辑上说,是
[解决办法],只是
[解决办法]恰好也对
因为==产生1或者0
对于1和0来说,
[解决办法]和
[解决办法]的结果刚好一样,即
0
[解决办法] 0 == 0
[解决办法] 0
0
[解决办法] 1 == 0
[解决办法] 1
1
[解决办法] 0 == 1
[解决办法] 0
1
[解决办法] 1 == 1
[解决办法] 1
但逻辑不一样,一个是bit与,一个是逻辑与。
[解决办法]个人意见:最大的区别在于
[解决办法]不会逻辑短路,
[解决办法]会逻辑短路
但也许是作者笔误