条件运算符是c语言中唯一的三元运算符,?:将一个表达式留空时的三元条件运算符行为...

我正在编写一个控制台应用程序,该应用程序尝试通过反复试验来“猜测”一个数字,它运行良好,并且所有操作都使我想知道我心不在part地写的某个部分,

代码是:

#include

#include

int main()

{

int x,i,a,cc;

for(;;){

scanf("%d",&x);

a=50;

i=100/a;

for(cc=0;;cc++)

{

if(x

{

printf("%d was too big\n",a);

a=a-((100/(i<<=1))?:1);

}

else if (x>a)

{

printf("%d was too small\n",a);

a=a+((100/(i<<=1))?:1);

}

else

{

printf("%d was the right number\n-----------------%d---------------------\n",a,cc);

break;

}

}

}

return 0;

}

更具体地说,令我困惑的部分是

a=a+((100/(i<<=1))?:1);

//Code, code

a=a-((100/(i<<=1))?:1);

我曾经((100/(i<<=1))?:1)确保如果100/(i<<=1)返回0(或false),则整个表达式的计算结果将为1 ((100/(i<<=1))?:***1***),如果条件为true ((100/(i<<=1))?  _this space_    :1),则将条件部分保留为空,这似乎可以正常工作,但存在离开的任何风险有条件的那部分是空的?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值