我是初学者,开始编写一些简单的程序。 我想创建一个全局变量来维护我的记录号,不幸的是,每次我调用我的函数时,我的变量都会重置为零。我查看了其他一些示例,例如人们使用 static 或 volatile 来声明我的变量,我都尝试了它们,但仍然重置了我的值。请指教。谢谢。 请看下面我的函数。
int record_number;
int file_number;
int Record_Count(int record_correct);
{
if (record_correct)
record_number++;
if (record_number == 100)
{
file_number++;
record_number = 0;
}
return record_number;
}
最佳答案
正如其他人评论的那样,您似乎没有直接从编辑器粘贴代码,而是从头开始输入代码。
就是说,我怀疑您已经触犯了 C 语言最臭名昭著的陷阱之一,它仍然偶尔会吸引专业程序员(我从 80 年代初就开始使用这门语言,现在仍然如此)。
转到您的原始代码并仔细查看您粘贴的行
if (record_number == 100)
它真的这么说吗?
if (record_number = 100)
如果是这样,每次调用该函数时都会执行 if
语句,因为谓词 (record_number = 100
) 首先将 100 分配给 record_number
然后测试结果以查看它是否非零(100
当然是非零值)并采用 if
分支,设置 record_number
为零(并且巧合地递增 file_number
)。
避免这种情况的方法是快速养成编码习惯,然后坚持下去。始终以这种方式对常量进行相等比较:
if(100 == record_number)
然后,如果您将 ==
错误键入为 =
,编译器将为您抛出错误。
关于c - 当我调用我的函数时如何避免我的全局变量被重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861842/