当我调用我的函数时,如何避免我的全局变量被重置

时间:2015-03-04 18:15:10

标签: c variables global

我是初学者,开始写一些简单的程序。 我想创建一个全局变量来维护我的记录号,不幸的是,每次调用我的函数时,我的变量都会重置为零。我调查了一些其他样本,例如使用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;
}

1 个答案:

答案 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)

然后,如果您将==错误输入为=,编译器将为您抛出错误。