首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么"hello“++ '/‘+ "world”== "hello47world"?

为什么"hello“++ '/‘+ "world”== "hello47world"?
EN

Stack Overflow用户
提问于 2015-08-02 01:48:37
回答 3查看 3K关注 0票数 48

对于此C#,a==true

代码语言:javascript
复制
bool a = "hello" +   '/' + "world" == "hello/world";

对于这个C#,b==true

代码语言:javascript
复制
bool b = "hello" + + '/' + "world" == "hello47world";

我想知道这是怎么回事,更重要的是,为什么C#语言架构师会选择这种行为?

EN

回答 3

Stack Overflow用户

发布于 2015-08-02 01:56:29

这是因为您使用的是一元运算符+。它类似于一元运算符-,但它不会改变操作数的符号,因此它在这里唯一的作用是隐式地将字符'/'转换为int

+'/'的值是/的字符代码,是47。

代码的作用与以下内容相同:

代码语言:javascript
复制
bool b = "hello" + (int)'/' + "world" == "hello47world";
票数 26
EN

Stack Overflow用户

发布于 2015-08-02 02:02:37

代码语言:javascript
复制
+ '/' 

给出了字符"/“的UTF-16 (decimal) 47字符代码,@Guffa已经解释了原因。

票数 1
EN

Stack Overflow用户

发布于 2015-08-02 04:48:08

正如在c#中一样,字符用单引号表示,在本例中为'/‘,字符前面的+运算符充当一元运算符,并要求编译器提供字符'/’的UTF值,即47。

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

https://stackoverflow.com/questions/31764510

复制
相关文章

相似问题

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