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

逻辑有关问题

2012-03-07 
逻辑问题根据编译器的优化原则:如果exp1为1,就不再判断exp2所以我感觉if(exp1||exp2){printf( ok...\n )

逻辑问题
根据编译器的优化原则:如果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是互斥的

热点排行