我是初学者,开始写一些简单的程序。 我想创建一个全局变量来维护我的记录号,不幸的是,每次调用我的函数时,我的变量都会重置为零。我调查了一些其他样本,例如使用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;
}
答案 0 :(得分:2)
正如其他人所评论的那样,看起来你并没有直接从编辑器中粘贴你的代码 - 而是从头开始输入代码。
那就是说,我怀疑你已经发现了一个最臭名昭着的C陷阱,它偶尔也会吸引专业的程序员(我从80年代初开始就使用这种语言而且我仍然这样做。)
转到原始代码,仔细查看已粘贴的行
if (record_number == 100)
它真的这么说吗?
if (record_number = 100)
如果是这样,每次调用函数时都会执行if
语句,因为谓词(record_number = 100
)首先将100分配给record_number
,然后测试结果以查看它是否为非-zero(当然100
)并取if
分支,将record_number
设置为零(并巧合地递增file_number
)。
避免这种情况的方法是很快发展编码习惯,然后坚持下去。始终以这种方式对常量进行代码相等比较:
if(100 == record_number)
然后,如果您将==
错误输入为=
,编译器将为您抛出错误。