[英]Why does string addition result is so weird?
public static void Main(string[] args)
{
int num = 1;
string number = num.ToString();
Console.WriteLine(number[0]);
Console.WriteLine(number[0] + number[0]);
}
我期望1
和11
的输出,但我得到1
和98
。 我错过了什么?
number[0]
的类型是char
,而不是string
- 您没有执行任何字符串连接。 相反,你有一个值为49的char
('1'的UTF-16值)。 没有+(char, char)
运算符,因此两个操作数都被提升为int
并且您正在执行整数加法。
所以这一行:
Console.WriteLine(number[0] + number[0]);
实际上是这样的:
char op1 = number[0];
int promoted1 = op1;
char op2 = number[0];
int promoted2 = op2;
int sum = promoted1 + promoted2;
Console.WriteLine(sum);
(逻辑上,在两个操作数被评估之后,促销发生了 - 我没有检查规范,因为它不会失败,所以它并不重要。)
由于[],这给出了字符串的第一个字符。
number[0] + number[0]
正在执行49 + 49(char 1的ascii代码);
我想你想这样做:
public static void Main(string[] args)
{
int num = 1;
string number = num.ToString();
Console.WriteLine(number);
Console.WriteLine(number + number);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.