【发布时间】:2015-03-26 23:07:22
【问题描述】:
我的团队正在为 RobotC 编写代码,这是一种具有类 C 语法的语言。它主要用作机器人编程的介绍。它具有基本的 C 内容:if 语句、for 和 while 循环、函数,甚至还有结构、数组和指针,但它们并不经常使用。主要区别在于它是多线程的、多线程的、不是免费的,而且一次只能编译一个文件。
我们想做一个马达动作。为此,您通常会编写代码。
motor[motorA] = 50;
motor 是 RobotC 提供的一个数组,其中包含它将设置电机的所有值。 motorA 是有线端口的枚举。
50 是功率等级。
我的队友不小心(或者可能是故意)写了这个
motor(motorA) = 50;
我正要纠正他,但令人惊讶的是,它编译并运行良好!
我知道 Java 和一点普通的 C,但这对我来说没有意义。您不能设置函数返回的值...可以吗?
有人能解释一下为什么会这样吗?
【问题讨论】:
-
抱歉标签的误导,但我没有足够的代表来制作 RobotC 标签。
-
我想说,因为它是一种学生语言,所以对于使用 [] 或 () 来获取数组中的索引,语法并不太严格。您不应该将其视为带有参数 motorA 的名为 motor 的方法,在幕后它可能无论如何都会转换为 [] (或 () ),
-
我会尝试做一些测试,但我认为他们不会将 () 转换为 [],因为它们在语言中同时具有数组和函数。也许编译器足够聪明,知道何时转换,但是当他们可以以更好的方式改进编译器时添加此功能会很奇怪......例如在错误所在的位置给出正确的行号。
-
语言描述相当不充分,它甚至从未提及数组。您更有可能在供应商论坛上找到帮助。