我对我的另一个问题感到沮丧。所以我写了这个例子。
int main()
{
printf("%d", 1 && 2);
return 0;
}
输出:
1
在 C# 中。这是错误的。为什么这是假的?我也不明白为什么我需要在这个例子中创建 bool 运算符,但不是我的另一个问题中的那个,但没关系。为什么下面是假的?对我来说完全是无稽之谈。
顺便说一句,这里描述了使以下错误的逻辑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyInt a=1, b=2;
bool res=a && b;
Console.WriteLine("result is {0}", res);
}
class MyInt
{
public int val;
public static bool operator true(MyInt t) { return t.val != 0; }
public static bool operator false(MyInt t) { return t.val == 0; }
public static MyInt operator &(MyInt l, MyInt r) { return l.val & r.val; }
public static MyInt operator |(MyInt l, MyInt r) { return l.val | r.val; }
public static implicit operator MyInt(int v) { return new MyInt() { val = v }; }
public static implicit operator bool(MyInt t) { return t.val != 0; }
}
}
}