首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教它们的区别

2014-01-01 
请问它们的区别? #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)
typedef enum
{
TimeHour= 0,
TimeMin,
TimeAP,
TimeOK,
TimeCancle
}TypeTime;
TypeTime curTimeItem = TimeHour;
#else
typedef enum
{
TimeMin = 0,
TimeHour,
TimeAP,
TimeOK,
TimeCancle
}TypeTime;
TypeTime curTimeItem = TimeMin;
#endif


个人觉得宏定义应该这样:

#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

[解决办法]
 1 == 0 
[解决办法]
 1

[解决办法]
 0 == 1 
[解决办法]
 0

[解决办法]
 1 == 1 
[解决办法]
 1
但逻辑不一样,一个是bit与,一个是逻辑与。

[解决办法]
个人意见:最大的区别在于
[解决办法]
不会逻辑短路,
[解决办法]
会逻辑短路

但也许是作者笔误

热点排行