【发布时间】:2017-06-02 00:29:18
【问题描述】:
我有这样的事情:
void test(int iter){
int i;
if(iter>3){
i=5;
printf("%d",i);
}else{
printf("%d",i);
}
return;
}
int main(){
test(5);
test(2);
return 1;
}
这只是一个例子。如果至少 iter 大于 3,那么当主变量 i 保持值 5(在内存中)时,是否有可能?
我知道这不正常。但是我的程序中有一个函数(我没有这样做的静态变量)。所以也许每次初始化这个变量的地址都是一样的(所以我得到的是旧值)?或者会发生什么?我不想保留旧值或其他东西。我只是好奇:这怎么可能?
【问题讨论】:
-
您遇到的这种行为是错误的,还是您想要创建的行为?
-
这是未定义的行为,因此显示的值可以是任何值(或没有或崩溃)。推理这种行为的一种方法是这个著名的 SO 答案:stackoverflow.com/a/6445794/12711