用java中的char变量计算
我有一个学校作业,其中一项任务是解释许多微小的计算,并解释为什么 java 给你它给你的输出..
I have an assignment for school, and one of the tasks is to explain a lot of tiny calculations and explaining why java gives you the output it gives you..
其中一项计算是:
1 + '2' + 3
1 + '2' + 3
这对我来说是一个词汇错误,因为老师为我的系统使用了错误的撇号",但我已经和其他同学交谈过,他们告诉我他们得到了一个实际的输出,所以我开始阅读它,并发现它应该表示一个 char 变量,并且我还发现了系统特定类型,所以我更改了符号以适用于我的系统,现在我得到了答案 54..
which for me gives a lexical error, as the teacher used the wrong "apostrophes" for my system, but I've talked to other fellow students and they told me they got an actual output, so I started reading about it, and found out that it is supposed to signify a char variable, and I also found out about the system specific types, so I changed the signs to work for my system, and now I get the answer 54..
我看不到其中的逻辑,我尝试用 char 变量在 Google 上添加/计算/数学,但没有找到任何可以很好地解释它的东西..
and I cannot see the logic in it, and I've tried to google adding/calculating/math with char variables, and have found nothing that explains it well..
所以我求助于编码人员,有一天我可能会成为其中的一员,以帮助我理解其中的逻辑..
So I turn to you, the people of coding, that I one day might be a part of to help me understand the logic of this..
这开始是一个家庭作业,我可能只是回答它给出了一个词法错误,因为我的编译器不理解这个符号,但现在它已经达到了我的好奇心,我真的很想知道如何java设法得到这个答案..
this started out as a homework assignment that I probably could have gotten through by just answering that it gives a lexical error because my compiler doesn't understand the symbol, but now it's peaked my curiosity, and I really want to know how java manages to get this answer..
感谢您对此事的任何帮助!:)
thank you for any help on the matter! :)
我可以看到我无法制作作业"标签,所以我希望我可以把它放在这里:)
I can see that I couldn't make a 'homework' tag, so I hope it's okay that I put it here :)
推荐答案
在 Java 中,char
s 可以通过 UTF-16 直接映射到 int
s.但是,对于大多数常见字符,将 char
值转换为 int
会在 ascii 表中生成它的索引.+
不是对字符的操作,而是对整数的操作.因此,java 采用 2
并在思考我无法添加这个"之后,意识到如果将其强制转换为 int,它可以添加它.
In Java, char
s have a direct mapping to int
s by UTF-16. For most common characters, though, casting a char
value to an int
yields its index on the ascii table. +
isn't an operation on chars, but it is an operation for ints. Therefore, java is taking the 2
and after thinking "I can't add this", realizes it can add it if it casts it to an int.
正如您在表中看到的,2"的索引为 50,因此 1 + 50 + 3 = 54.
As you can see in the table, '2' has a index of 50, thus 1 + 50 + 3 = 54.
相关文章