C51,在用函数做跑马灯时出现报错,后来发现变量i的定义放在给寄存器P2赋值的前面或者一个在循环内一个循环外分开才不报错。 为什么一定要把定义变量放于给寄存器赋值之前或者分开写,否则就报错?
这个是变量定义放在给寄存器赋值之后的,报错!
这个是将寄存器赋值放在循环外,不报错!
这个是将寄存器乖乖放在变量定义后,不报错!
C51,在用函数做跑马灯时出现报错,后来发现变量i的定义放在给寄存器P2赋值的前面或者一个在循环内一个循环外分开才不报错。 为什么一定要把定义变量放于给寄存器赋值之前或者分开写,否则就报错?
这是C51的规范,所有定义必须放置在所有表达式之前(初始化赋值不算)
如果你把赋值放到while前面,那么while自成一个块,在块内定义还是在最前的,就符合规范
到了C99和C++就没有这种规定了,只要变量使用之前定义就行,不要求必须在最前面