我正在使用Visual Studio 2010,今天我遇到了一个奇怪的错误.看看这段代码:
using System;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int x = 5;
int y = 10;
int z = y - -x;
Console.WriteLine(z);
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码编译正常(没有错误,没有警告)并显示15!我认为这种行为有点奇怪.我不知道它是否应该是这样的.但是,您可以编写如此愚蠢的代码:
int z = y - - - + + + + - - - - - - - - x;
Run Code Online (Sandbox Code Playgroud)
注意运营商之间的空间很重要.z为5,因为加号符号没有任何效果,减号符号的数量是奇数.
有没有理由支持这种操作员行为?这是故意还是一种错误?要设置任何标志以至少获得警告?
干杯
我根本没看到它有什么问题.它从10减去-5 - 即它使用一元运算符将5转为-5,然后使用二元运算符执行减法.我想不出任何类似的语言(C,Java的等),其中本的就不会是有效的.
我不认为这是一个错误,我非常怀疑有任何选择可以使这个警告.
我需要对这里的术语略微小心,但我认为运算符的绑定由它们的优先级控制,根据C#规范的7.3.1节.您可以将一元运算符视为"绑定更紧密"而不是二元运算符.
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |