小编Cᴴᴀ*_*ᴴᴀZ的帖子

短手赋值运算符,+ =,真意?

我了解到这i+=2是缺点i=i+2.但现在我怀疑它.对于以下代码,上述知识没有任何好处:

byte b=0; B = B + 2; //错误:必需字节,找到int

上面的代码是合理的,因为2int类型和表达式返回int值.

但是,以下代码运行正常:

byte b=0; b+=2; //b stores 2 after += operation

这迫使我怀疑+=短手操作员比我所知道的更多.请赐教.

java shorthand implicit-cast assignment-operator

5
推荐指数
1
解决办法
4658
查看次数

一元操作与任务融合

令人怀疑的结果如下代码:

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 binary-operators unary-operator assignment-operator

3
推荐指数
1
解决办法
264
查看次数

++ i + i ++评估

由于这篇文章,混乱上升了.作者更新了他的帖子,结果变得清晰. 结论:Java 从左到右评估表达式

关闭!

由于表达式的评估是从右到左完成的,因此以下代码应存储5j:

int i=2;
int j=++i+i++;
System.out.println(j);
Run Code Online (Sandbox Code Playgroud)

但是我得到6作为输出,这迫使我重新思考左右评价的想法.请在这里解释一下理论.

java expression-evaluation unary-operator

1
推荐指数
2
解决办法
2477
查看次数

为什么C#需要两个双引号来打印"在逐字字符串的情况下?

如果我存储一个逐字字符串, string s=@""Hello"";它应该假设解析字符串并打印"Hello"(将"字符作为字符串的一部分)

但在实际操作中它失败了,而是string s=@"""Hello""";显示所需的输出("Hello").

为什么语法需要额外的"字符?如果C#以上述假设方式开始运作,那么破坏性结果会是什么?

c# programming-languages double-quotes verbatim-string

-2
推荐指数
1
解决办法
392
查看次数