【发布时间】:2016-02-18 01:33:02
【问题描述】:
那天晚上我在上数据库课,我们注意到下面的代码似乎可以工作,但我们无法从逻辑上理解为什么。
DECLARE @counter integer
SET @counter = 42
WHILE @counter < 52
BEGIN
set @counter = @counter+++++ + 1
PRINT 'The counter is ' + cast(@counter as char)
END
我们意识到我们可以在 @counter 变量上添加任意数量的 +,而 SSMS 似乎并不关心,即使它与原始变量不匹配。有人碰巧知道为什么会这样吗?
【问题讨论】:
-
有趣。如果将其更改为
+-1,它将进入无限循环。如果您将其更改为+-+-+1,它也可以工作。 -
您可能会发现this 很有帮助。基本上,我猜测只有第一个“+”被评估,所有其他“+”被视为“这是一个正数”。所以 ++1 和 +Positive1 一样