我了解到这i+=2是缺点i=i+2.但现在我怀疑它.对于以下代码,上述知识没有任何好处:
byte b=0;B = B + 2; //错误:必需字节,找到int
上面的代码是合理的,因为2是int类型和表达式返回int值.
但是,以下代码运行正常:
byte b=0; b+=2; //b stores 2 after += operation
这迫使我怀疑+=短手操作员比我所知道的更多.请赐教.
令人怀疑的结果如下代码:
public static void main (String[] args)
{
int i = 2;
i = i+=2 + i++;
System.out.println(i); }
Run Code Online (Sandbox Code Playgroud)
期待8作为输出,因为'i + = 2'应该更新 i,但它不表现如此.
产量:6
我推断短手赋值运算符按预期返回4但不在变量i中更新相同.任何解释将不胜感激.
由于这篇文章,混乱上升了.作者更新了他的帖子,结果变得清晰. 结论:Java 从左到右评估表达式
由于表达式的评估是从右到左完成的,因此以下代码应存储5在j:
int i=2;
int j=++i+i++;
System.out.println(j);
Run Code Online (Sandbox Code Playgroud)
但是我得到6作为输出,这迫使我重新思考左右评价的想法.请在这里解释一下理论.
如果我存储一个逐字字符串,
string s=@""Hello"";它应该假设解析字符串并打印"Hello"(将"字符作为字符串的一部分)
但在实际操作中它失败了,而是string s=@"""Hello""";显示所需的输出("Hello").
为什么语法需要额外的"字符?如果C#以上述假设方式开始运作,那么破坏性结果会是什么?