【发布时间】:2018-01-20 00:14:52
【问题描述】:
我不明白为什么这种打印 char 数据类型一次是 char,另一次是整数
static void Main(string[] args)
{
char x = 'A';
int i = 0;
Console.WriteLine(x); // A
Console.WriteLine(true ? x : 0); // 65 ???
Console.WriteLine(false ? i : x); // 65 ???
Console.ReadLine();
}
我希望输出是A, A, A,但上面的输出是A, 65, 65。为什么?
【问题讨论】:
-
您是否尝试查看文档?它会更快。
-
表达式
(condition) ? x : y只能有一种类型,在编译时确定。由于您可以将char转换为int,但反之亦然,因此该类型为int。因此,调用了WriteLine(int)覆盖。 -
如果您查看文档here,它会说,“first_expression 和 second_expression 的类型必须相同,或者必须存在从一种类型到另一种类型的隐式转换。 " 由于存在从
char到int的隐式转换,但不是相反,类型变为int(隐式转换意味着它可以在没有显式转换的情况下工作 - 你可以做到@987654333 @,但你不能这样做char foo = 1;)。
标签: c# char console.writeline