C中的变量用法

时间:2017-02-25 18:35:36

标签: c variables

我是C的新手,遇到了我认为特别的代码,

extern int num;
int counter;

void init_counter() {
    counter = 0;
}

int return_position() {
    int pos = counter;
    counter = counter * num;
    return pos;
}

pos变量有什么意义? 为什么我不能这样做:

extern int num;
int counter;

void init_counter() {
    counter = 0;
}

int return_position() {
    counter = counter * num;
    return counter;
}

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

pos变量的重点是保留(然后返回)counter原始值。你的替代品" version返回counter new 值,这是一种完全不同的行为。

尝试在没有额外变量的情况下实现预期行为可能如下所示

int return_position() 
{
  counter = counter * num;
  return counter / num;
}

但是它更难以阅读,并且失败为零num

答案 1 :(得分:0)

如前所述,这两个代码不一样,并且pos保留了旧的计数器值 假设在init_counter调用后你将1分配给计数器,num为3,我们运行return_position() 3次: 了解如何遵循您的代码非常重要 我之所以认为counter = 1是因为counter = counter*num;总是会产生0,除非counter是其他东西......

counter = 1, num = 3

所以在第一个条目

pos = 1
counter = 3*1

我们返回1

下一轮

counter = 3, num = 3
pos = 3
counter = 3*3 = 9
return 3

下一轮

counter = 9, num = 3
pos = 9
counter = 9 * 3 = 27
return 9 

所以,如果我们只打印了返回的值,我们就会得到 “ 1 3 9 “ 计数器等于27

更方便的方法是创建变量表并像以前一样更新它。 ofc有调试工具可以帮助你这样做,但首先尝试使用笔和纸

请注意,如果我们假设计数器仅由init_counter()初始化 然后我们只会拨打return_position() 3次 我们只得到0,这是没有意义的:)

祝你学习成绩好运