C 在while循环中保留变量?
我试图创建一个程序,将输入放入数组中,然后在输入终止时将它们全部打印出来。我的理解是,当你在循环外声明一个变量时,它会保留这些值,但我无法解决这个问题。我知道总有办法做到这一点,但我还是一无所获C 在while循环中保留变量?,c,loops,while-loop,C,Loops,While Loop,我试图创建一个程序,将输入放入数组中,然后在输入终止时将它们全部打印出来。我的理解是,当你在循环外声明一个变量时,它会保留这些值,但我无法解决这个问题。我知道总有办法做到这一点,但我还是一无所获 #include <stdio.h> int main(){ int i=0; int n=0; int size=0; int numbers[i]; scanf("%d", &numbers[i]); while ((i = 1 &
#include <stdio.h>
int main(){
int i=0;
int n=0;
int size=0;
int numbers[i];
scanf("%d", &numbers[i]);
while ((i = 1 && numbers[i-1] != 42)){
scanf("%d", &numbers[i]);
i++;
size++;
//printf("%d",numbers[i]);
}
printf ("%d", sizeof(numbers));
while ((n = 0 && n < sizeof(numbers))){
printf("%d", numbers[i]);
printf("\n");
++i;
++n;
}
}
#包括
int main(){
int i=0;
int n=0;
int size=0;
整数[i];
scanf(“%d”和编号[i]);
while((i=1&&number[i-1]!=42)){
scanf(“%d”和编号[i]);
i++;
大小++;
//printf(“%d”,数字[i]);
}
printf(“%d”,sizeof(数字));
而((n=0&&n
您的而
情况:
(i = 1 && numbers[i-1] != 42)
有两个问题:
实际上为i=…
赋值。在意外循环的cas中,始终检查条件中是否存在i
而不是=
=
- 由于,您将
分配给1&
。只要你在循环中,i
为42,numbers[i-1]
变为0(因为i
为假,numbers[i-1]!=42
为假,即0)。这给你的印象是它没有保持价值1&&false
编辑:当然,第二个循环中n的原理是一样的;-) 您的代码中有很多错误。它们如下- 1.int i=0; 整数[i];这毫无意义。因为您正在创建大小为0的数组
#include <stdio.h>
int main(){
int i=0;
int n=0;
int size=1;
int numbers[10000];//I am assuming maximum input to be 10000
scanf("%d", &numbers[0]);
i=1;
while (( numbers[i-1] != 42)){
scanf("%d", &numbers[i]);
i++;
size++;
//printf("%d",numbers[i]);
}
printf ("size=%d\n", size);
while ( n < size){
printf("%d", numbers[n]);
printf("\n");
//++i;
++n;
}
}
#包括
int main(){
int i=0;
int n=0;
int size=1;
整数[10000];//我假设最大输入为10000
scanf(“%d”和编号[0]);
i=1;
而((数字[i-1]!=42)){
scanf(“%d”和编号[i]);
i++;
大小++;
//printf(“%d”,数字[i]);
}
printf(“大小=%d\n”,大小);
而(n
代码中有三件事:
- 整数[i];正在尝试声明一个零元素数组,该数组解释了未定义的行为。(尽管C中没有绑定/范围检查)
- scanf(“%d”,&numbers[i]),当i>=1时,为此分配的存储在哪里?大多数情况下会在未定义的区域结束/过度写入现有值
#include <stdio.h>
int main(){
int i=0;
int n=0;
int size=0;
int numbers[42];
scanf("%d", &numbers[i++]);
while (((numbers[i-1] != 42)))
scanf("%d", &numbers[i++]);
size=sizeof(numbers)/sizeof(int); /* Not necessary as array size pre-defined*/
printf("\nsize:%d\n",size);
while(n < size)
printf("%d\n", numbers[n++]);
printf("\n");
}
#包括
int main(){
int i=0;
int n=0;
int size=0;
整数[42];
scanf(“%d”)和数字[i++];
而(((数字[i-1]!=42)))
scanf(“%d”)和数字[i++];
size=sizeof(numbers)/sizeof(int);/*不需要,因为数组大小是预定义的*/
printf(“\n大小:%d\n”,大小);
而(n
注意:您可以更改数组的大小,但请记住它是一个自动变量,未显式初始化的数组元素将被垃圾值填充。这有意义吗:
int i=0;,整数[i]
???while((i=1&&numbers[i-1]!=42)){
将在每次迭代之前将i
设置为1。它将不允许i
递增。对循环使用。另外,整数[i]
在为0时是非法的(即始终在代码中)。谢谢!这很有意义。