ba[i]=(ctrl & 1<<i)!=0 ? true : false;
问题:
上面这句代码是三元运算,要是把它写成
if((ctrl & 1<<i)!=0)
{}
else
{}
这样的具体要怎么写啊?

解决方案 »

  1.   


    if((ctrl & 1<<i)!=0)
    {
    ba[i]= true  ;
    }
    else
    {
    ba[i]= false;
    }
      

  2.   

    显示错误为:无法将类型“int”隐式转换为“bool” (CS0029) - e:\Documents and Settings\Administrator\My Documents\SharpDevelop Projects\索引3\索引3\MainForm.cs:63,12
      

  3.   


    var j = i;
    if((ctrl & 1<<i)!=0)
    {
    ba[j]= true  ;
    }
    else
    {
    ba[j]= false;
    }
      

  4.   

    我晕!当我把ba[i]=(ctrl & 1<<i)加上!=0之后就对了!为什么啊!
    ba[i]=(ctrl & 1<<i)!=0;
    if((ctrl & 1<<i)!=0)
    {
    ba[i]= true;
    }
    else
    {
    ba[i]= false;
    }
      

  5.   

    你的语句相当于 ba[i]=  ((ctrl & 1<<i)!=0)? true : false;
    如果(ctrl & 1<<i)!=0成立 则ba[i]=true 否则等于false
      

  6.   

    这样就对了:
    ba[i]=(ctrl & 1<<i)!=0;
    if((ctrl & 1<<i)!=0)
    {
    ba[i]= true;
    }
    else
    {
    ba[i]= false;
    }
    这样就错了:
    ba[i]=(ctrl & 1<<i);
    if((ctrl & 1<<i)!=0)
    {
    ba[i]= true;
    }
    else
    {
    ba[i]= false;
    }
    只是一个第一句代码加了!=0,一个没加就错了!
      

  7.   

    ba[i]=(ctrl & 1<<i)!=0 ? true : false;
    不是写成
    ba[i]=(ctrl & 1<<i)!=0;
    就可以了吗??为什么还要写那个后面的true:false?
    更有甚者加个if else 有必要吗?