为什么这段代码不起作用?
private void Function(int starts , int ends)
{
int i = starts;
int z = ends;
for(i; i < z; i++)
{
[...]
}
}
就是说: 错误3 只有赋值、调用、递增、递减和新对象表达式可以用作语句。
怎么做才能让代码工作?
为什么这段代码不起作用?
private void Function(int starts , int ends)
{
int i = starts;
int z = ends;
for(i; i < z; i++)
{
[...]
}
}
就是说: 错误3 只有赋值、调用、递增、递减和新对象表达式可以用作语句。
怎么做才能让代码工作?
What to do to make code work?
怎么样
for (; i < z; i++)
{
[...]
}
'z'
或者为什么在可以做的时候创建一个额外的变量
for (int i = starts; i < ends; i++)
{
[...]
}
为什么你的代码不起作用!!
因为 for 循环的语法是
for (initializer; condition; increment or decrement)
{
}
您没有在初始化程序i
中初始化。您可以初始化它(作为我的第二个片段)或删除初始化器,如果您在一些较早的语句中初始化它(作为我的第一个片段)。
i
就其本身而言,它不是一个陈述,而是一个表达。就像您不能简单地i;
在代码中的某处编写一样。for循环的初始化部分需要初始化;但是,如果(就像这里的情况)循环已经初始化(i
已经设置),你可以像 Nikhil 所示的那样省略它。干脆做for(;i<z;i++)
。
for 循环的第一部分采用初始化语句。i
不是声明。如果您不想初始化任何内容,则可以将该部分留空,如 Nikhil 的回答:
for(; i < z; i++)
{
[...]
}
永远不要在 for 循环中使用外部定义的变量作为索引器。
private void Function(int starts , int ends)
{
// int i = starts; // don't do it. you're exposing yourself to headaches if/when you lose control of the value of i
int z = ends;
for(int i = starts; i < z; i++) //first statement of for loops initializes the indexer
{
[...]
}
}
我认为这是更好的答案,不是吗?
private void Function(int starts , int ends)
{
for(int i = starts; i < ends; i++)
{
[...]
}
}