【发布时间】:2012-10-29 17:26:50
【问题描述】:
我的 C 代码有问题,我声明了一个静态 int 变量(作为标志),然后在仅调用一次的 init() 中将其初始化为 -1,然后当我尝试更新值时之后变为 0 或 1,它会不断恢复到 -1。
有人知道问题出在哪里吗?
我没有任何具有相同标识符的局部变量,所以我真的迷路了。
谢谢!
static int previousState;
void init()
{
previousState = -1;
}
void moveForward(int currentState)
{
if (previousState == -1)
previousState = currentState;
if (previousState != currentState)
{
/* do stuff */
/* PROBLEM: it never goes into here, because previousState is always -1! */
}
/* other code */
}
void main()
{
init();
if (fork() == 0)
{
/* do stuff */
moveForward(1);
exit();
}
/* more forks */
moveForward(0);
exit();
}
【问题讨论】:
-
传递给
moveForward()函数的是什么? -
取决于状态,0 或 1。
-
要么你调用 init 比你想象的要多,要么你用 -1 调用这个函数。调试器或调试打印会告诉你...
-
您要么多次调用
init(),要么调用moveForward(),参数为-1。如果您不发布您的调用代码,我无法判断问题可能是什么。 -
我在
/* other code */块中闻到了=而不是==