通过测试我发现
这是不合法的:
for (int i= 0; i < 1000000000; i++)
int j = i & i+1 ; // j cannot be declared here!
但这是:
for (int i= 0; i < 1000000000; i++) {
int j = i & i+1 ;
}
为什么?
第一种方法不合法,因为编译器很明显不能使用j
在那里声明的声明,因为在该for
循环中不能再包含其他语句。基本上,该位置的新变量声明将超出下一个语句的范围,因此没有任何用处。
在第二种情况下,循环后跟花括号,这创建了一个新的作用域,您可以使用该变量。
问题内容: 我有以下程序。 执行后,我得到: 我们可以看到,已经执行了2次。但是,如果我稍作修改,例如: 我将收到错误“左侧没有新变量”。为什么这个? 问题答案: 这里有几件事。首先,让我们解决您问题的下半部分。 声明变量的默认方法是使用关键字,然后由运算符分配给它。 Go为我们提供了一个快捷方式,既可以声明变量也可以分配值 在您的示例中,当您第二次使用时,您试图重新声明一个在相同作用域内命名的新
我可以打印最大罚款,但我不能打印计数。我看不出max和count之间的区别,也看不出为什么它不让我打印count。感谢任何帮助
问题内容: 我在程序中看到了与程序中此特定循环相关的不同行为,但我不确定我为什么理解它的行为方式。 的输出是 的输出是 我去网上看了以下内容 在切片上进行测距时,每次迭代都会返回两个值。第一个是索引,第二个是该索引处的元素的副本 它说一个副本,这是否意味着它返回了字符串的副本,但这实际上是指向变量的指针?在这种情况下,在循环结束时对will的任何引用都实际上引用了数组中的最后一个元素,例如?这是否
问题内容: 我想做的是请用户输入一些字符串以读入数组,然后要求用户输入该数量的字符串并将其读入数组。当我运行此代码时,它从不要求我在第一个for循环的第一个循环中输入内容,只打印出“字符串#0:字符串#1:”,然后我就可以输入文本了。为什么会这样,我做错了什么? 问题答案: 缓冲。 输入输入数量时,不会在输入缓冲区中占用换行符的位置。在for循环的迭代0中,缓冲区中已经有一行输入,并且可以立即完成
如下所示,我要反转数组。但我的代码不管用。这是我的for循环。请看一下。这个for循环正确吗。代码如下。
在我的程序中,我发现当为时,循环无法正确退出。它看起来像整数溢出,远远大于10,循环不会停止。请告诉我发生了什么,以及如何在大型项目中避免这个错误。 代码链接