簡體   English   中英

為什么字符串添加結果如此奇怪?

[英]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]);
}

我期望111的輸出,但我得到198 我錯過了什么?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM