我和另一位大学生讨论过以下这个问题的原因.
#include <stdio.h>
#include <stdlib.h>
void print_sign2(void);
int ctr;
char sign1='x';
char sign2='=';
int main() {
for (ctr=0; ctr<10; ctr++){
printf("%c",sign1);
print_sign2();
}
return 0;
}
void print_sign2(void) {
for (ctr=0; ctr<2; ctr++)
printf("%c",sign2);
}
Run Code Online (Sandbox Code Playgroud)
我认为这个循环是因为ctr整数是全局的并且也在函数中使用print_sign2.这意味着每次print_sign2调用该函数时ctr都设置为0.这是正确的吗?
当print_sign2完成,ctr<2是假的.第一次这个变为假是什么时候ctr是2.所以ctr是2.因此循环main永远不会终止,因为ctr永远不会超过3,因此ctr<10总是如此.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |