我不太清楚如何表达它,所以我会证明我的意思.
a = 1
b = 2
my_list = [a,b]
print my_list # [1,2]
a = a + 1
b = b * 2
print a # 2
print b # 4
# prints [1,2] but I want [2,4]
print my_list
Run Code Online (Sandbox Code Playgroud)
这也发生在元组和集合中.我需要什么数据结构?或者我需要什么逻辑?
方法1的优点是文件大小略小,因为源代码中的文本字符较少:
int i, j;
for (i = 0; i < numRows; i++)
for (j = 0; j < numCols; j++)
//<some code here>
Run Code Online (Sandbox Code Playgroud)方法2的优点是局部变量的范围较小.
int i;
for (i = 0; i < numRows; i++)
{
int j;
for (j = 0; j < numCols; j++)
//<some code here>
}
Run Code Online (Sandbox Code Playgroud)即使在今天的现代计算机中优化的差异可以忽略不计,哪种方法被认为是"更好"的代码?
编辑以澄清此问题不重复:
这个问题是基于当前的C11标准,它不允许这样的语法:
for (int i = 0; i < numRows; i++)
Run Code Online (Sandbox Code Playgroud)
在C++和C99中,这种语法是完全可以接受的,而C11不允许在for语句中使用变量声明.
编辑以纠正错误信息:
我以为我正在使用C11,因为我最近从CodeBlocks下载了编译器,所以这就是为什么我说C11不允许声明中的变量声明for.但事实证明我实际上使用的是C90,这是我问题的根源.