提问人:Aleksandr Sergeevich 提问时间:11/17/2020 更新时间:11/17/2020 访问量:53
从字符声明字符串会产生意外结果。为什么会这样?
Declaring a string from a character has an unexpected result. Why is this so?
问:
半天寻找这个错误。为什么第三种情况会出现意想不到的结果?
// case 1
string value1 = "a" + "a" + "A";
byte[] asciiBytes1 = Encoding.ASCII.GetBytes(value1); // expected: 97 - 97 - 65
Console.WriteLine(string.Join(" - ", asciiBytes1)); // result: 97 - 97 - 65
// case 2
string value21 = 'a' + "A";
byte[] asciiBytes21 = Encoding.ASCII.GetBytes(value21); // expected: 97 - 65
Console.WriteLine(string.Join(" - ", asciiBytes21)); // result: 97 - 65
// case 3
string value22 = 'a' + 'a' + "A";
byte[] asciiBytes22 = Encoding.ASCII.GetBytes(value22); // expected: 97 - 97 - 65
Console.WriteLine(string.Join(" - ", asciiBytes22)); // result: 49 - 57 - 52 - 65
答:
1赞
Adam
11/17/2020
#1
您正在混合字符和字符串。 这: “a” + “a” 导致 ASCII CHAR 值的整数相加。
3赞
johnny 5
11/17/2020
#2
这是操作的顺序,在所有其他示例中,您将 char 添加到字符串中。但是,在第三个示例中,您将 char 添加到 char 中,该 char 充当字节并执行整数乘法。
然后将整数添加到字符串“A”中
所以 'a' + 'a' = 194 和 194 + “A” = 197A
这就是你看到的结果
评论
1赞
Hans Kilian
11/17/2020
虽然是 194 :)
1赞
Aleksandr Sergeevich
11/17/2020
亚当的回答速度快了 3 秒:)
评论
((string)((int)'a' + (int)'a') + "A"