逻辑问题
根据编译器的优化原则:如果exp1为1,就不再判断exp2
所以我感觉
if(exp1 || exp2)
{
printf( "ok...\n ");
}
和
if(exp1)
{
printf( "ok...\n ");
}
else if(exp2)
{
printf( "ok...\n ");
}
在结果上是完全一样的...
但我的程序貌似不一样,也不知道是不是这个问题,也找不出有什么不一样!
希望赐教!
[解决办法]
怎么不一样了说说看
[解决办法]
写程序不要依赖编译器的处理模式
[解决办法]
else if(exp2)
是说明
这里要求的是:
exp1==false
exp2==true
当然逻辑不一样了
而原体在这个分支上要求的是:
exp1==任意
exp2==true
[解决办法]
第一个是:
exp1 || exp2
第二个是:
(!exp1)&&(exp2)
[解决办法]
第一个是:
exp1 || exp2
第二个是:
(!exp1)&&(exp2)
你用真值表算一下,不一样
[解决办法]
但结果ms应该是一样的吧
[解决办法]
if(exp1 || exp2)
{
printf( "ok...\n ");
}
和
if(exp1)
{
printf( "ok...\n ");
}
else if(exp2)
{
printf( "ok...\n ");
}
程序运行的结果一样,逻辑上也一样!
lz好好看看程序!!
[解决办法]
对于:if(exp1 || exp2)
exp1和exp2可以相容
而:if(exp1) else if(exp2)
exp1和exp2是互斥的