[英]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.