首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# Console.WriteLine将Char类型打印为整数

C# Console.WriteLine将Char类型打印为整数
EN

Stack Overflow用户
提问于 2018-01-20 00:14:52
回答 1查看 2.1K关注 0票数 2

我不明白为什么这个打印char数据类型一次作为char,另一次作为整数。

代码语言:javascript
运行
复制
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。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-20 00:20:40

三元/条件运算符?需要以下所有三个操作数:

  1. 计算为布尔值的表达式。
  2. 返回任何类型值的表达式。
  3. 返回与#2相同类型的值的表达式。

返回值将始终是相同的类型;这就是为什么#2和#3必须是相同类型的原因。

如果第三个操作数与第二个操作数的类型不同,编译器将查找隐式强制转换,并在可能的情况下使用它。

所以当你写

代码语言:javascript
运行
复制
var x = flag ? 65 : 'A';

它和

代码语言:javascript
运行
复制
int x = flag ? (int)65 : (int)'A';

...and将始终返回一个int

如果不是这样,则不能将?的结果分配给强类型变量,这将是一个严重的障碍。

另外,您可以而不是编写如下内容:

代码语言:javascript
运行
复制
var x = flag ? 65 : "A"; //Notice it's a string and not a char

...because没有从"A“到整数的隐式转换。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48351313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档