不能应用于'int'和'int'类型的操作数

时间:2012-12-25 07:03:15

标签: c#

我的C#代码:

public int printallancestor(Node root, Node key)
{
     if(root == null)
          return 0;
     if(root == key)
          return 1;
     if(printallancestor(root.leftChild,key)||printallancestor(root.rightChild,key))
     {
          Console.WriteLine(root.iData);
          return 1;
     }
     return 0;
}

以上代码中的以下行if(printallancestor(root.leftChild,key)||printallancestor(root.rightChild,key))我得到以下错误无法应用于'int'和'int'类型的操作数。这有什么问题?

5 个答案:

答案 0 :(得分:3)

看起来像你的方法:

printallancestor(root.leftChild,key)

返回一个整数值,并且您尝试在条件中使用它。您只能在类似于现在的情况下使用布尔类型

我相信你希望你的方法分别返回10的真假,你现在无法在C#中做你正在做的事情。你可以尝试:

if(printallancestor(root.leftChild,key) == 1|| .... 

或者,如果您希望值大于1,则为:

if(printallancestor(root.leftChild,key) > 1) // true

您可能会看到:
|| Operator (C# Reference)

  

条件OR运算符(||)执行其bool的逻辑OR   操作数即可。如果第一个操作数的计算结果为true,则为第二个操作数   没有评估。如果第一个操作数的计算结果为false,则第二个操作数   operator确定OR表达式是否作为整体求值   是真还是假。

答案 1 :(得分:0)

printallancestor的返回类型是int。 你正在使用||用于bool的运算符。 试试

if(printallancestor(root.leftChild,key) != 0||printallancestor(root.rightChild,key) != 0)

应解决问题。

答案 2 :(得分:0)

运算符OR(||)需要两个bool操作数,而不是int。

答案 3 :(得分:0)

您的方法返回int,但您尝试在if条件下使用。那不行。您只能使用条件bool类型。

试试这样;

if(printallancestor(root.leftChild,key) == 1|| ..  
  

条件OR运算符(||)执行其bool的逻辑或运算   操作数。

答案 4 :(得分:0)

这样做

 public bool printallancestor(Node root, Node key)
    {
        if(root == null)
            return false;
        if(root == key)
            return true;
        if(printallancestor(root.leftChild,key)||printallancestor(root.rightChild,key))

        {
            Console.WriteLine(root.iData);
            return true;
        }
        return false;
    }