所以我有这个代码辉煌行,我正好有一个错字:编译器不会抱怨错误的语法
for(int x=firstKey; x <- runner->numKeys; x++){...}
不仅没有顺利编译而且程序链接,并没有跑一个问题。
当然for循环没有运行一次。但我不明白什么<-
被解释为?这是如何合法的?
所以我有这个代码辉煌行,我正好有一个错字:编译器不会抱怨错误的语法
for(int x=firstKey; x <- runner->numKeys; x++){...}
不仅没有顺利编译而且程序链接,并没有跑一个问题。
当然for循环没有运行一次。但我不明白什么<-
被解释为?这是如何合法的?
它被这样解释的:
for(int x = firstKey; x < -runner->numKeys; x++)
空白在C.例外大多微不足道包括您不能添加空格内令牌像<=
或::
。但是令牌之间的空间通常是允许的,并且大部分时间也允许删除令牌之间的空间。
现在我明白了,谢谢!另外,这是C. – codehitman 2015-02-10 05:10:09
其实,这不是错语法,这是完全有效语法,是语句:
if (a = 7) doSomething(); // will set a to 7 and call doSomething().
b == 42; // won't set b to 42 at all.
你有什么是语义问题,而不是语法之一。 意思是,而不是结构,是不正确的。
表达:
x <- runner->numKeys
被解释为:
x < (-runner->numKeys)
换句话说,循环将只要x
小于键的数量的否定运行。由于键的数量很可能是正数(尽管有一个零边的情况需要考虑),否定将是负数,因此如果第一个键是非负数,则主体将永远不会运行。
在任何情况下,边缘情况都是不相关的,因为行为仍然是不正确的,只是以不同的方式。我收集你可能的意思是之一:
x <= runner->numKeys
x < runner->numKeys
这就是元减运算符。 – 2015-02-10 05:07:05