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

标签 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;
}

最佳答案

正如其他人评论的那样,您似乎没有直接从编辑器粘贴代码,而是从头开始输入代码。

就是说,我怀疑您已经触犯了 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/

相关文章:

java - Android:静态变量和移动复杂数据

c++ - 实现全局范围数据的最佳方式

python - 如何在多个 google appengine 实例上保持全局变量持久?

c - 读取文件并将数据保存到二维数组中

c - 那会错吗?如果是这样,为什么呢?产量为2500

c++ - 引用如何不需要存储?

python - Sage 的 "var"是如何工作的?

c - 线程池 - 处理任务多于线程的情况

c - 将字符串拆分为 block 。

linux - 从链接的 docker 重命名环境变量