我遇到了一些代码并没有像我想的那样运行。其他人认为这个代码应该返回1吗?有没有很好的解释为什么它没有返回1?
int count = 0;
count++.ToString(); // Returns 1 no?
我一直认为count++和count = count + 1是一样的...
我遇到了一些代码并没有像我想的那样运行。其他人认为这个代码应该返回1吗?有没有很好的解释为什么它没有返回1?
int count = 0;
count++.ToString(); // Returns 1 no?
我一直认为count++和count = count + 1是一样的...
x++
是一个后置自增运算符。它表示 x 的值会被递增,但是返回的是旧的(未递增)值(在你的情况下是 0,然后应用了 ToString
方法)。
要获得你想要的行为,请使用前置自增运算符 ++x
。
目前为止发布的至少四个答案是错误的。相信 ++ 运算符具有与C中相同的含糊不清的语义是一种极其常见的错误认识。实际上并不是这样。++ 运算符的语义是明确定义的,并且与这里错误回答所描述的方式有很大不同。请参阅我对上次提出这个问题的答案以获取详细信息:
x++ 是后增量; 当前值 (0) 用作结果,然后发生 ++。
有点像:
var tmp = count;
count++;
Consle.WriteLine(tmp);
pre-increment (++x)会按照您的预期行事。
(++i).ToString();
这个功能完全符合您的期望。
++c.ToString()
是试图对 ToString()
返回的字符串进行预增操作。 - Chris Dickson你的原始代码将始终显示为0。
试一下这个:
(++c).ToString();
这将返回1。
第一种形式是前缀递增操作。操作的结果是操作数在递增后的值。
第二种形式是后缀递增操作。操作的结果是操作数在递增之前的值。
Console.WriteLine(cpt++.ToString());
cpt = 0;
Console.WriteLine((++cpt).ToString());
Console.ReadLine();
} - Sebastien