Я написал программу на языке C, которая вычисляет двоичное число десятичного числа, указанное во вводе, но у меня есть большая проблема, вызванная переменной, используемой для сохранения числа, указанного во вводе.Странное поведение переменной int
Это мой код:
int main() {
// variables declaration
int n,a,i=0;
int vector[i];
float rest;
// acquisition of the input number
printf("enter an integer:...");
scanf("%d",&n);
while(n>0) {
// calculation and comparison of the data acquired to obtain the binary output
rest=n%2;
if (rest!= 0) {
vector[i]=1;
}
else if (rest== 0) {
vector[i]=0;
}
n=n/2;
i++;
}
// representation of the binary value calculated
printf("the binary value of the number entered is: ");
for(a=i-1;a>=0;a--) {
printf("%d",vector[a]);
}
return 0;
}
Проблема заключается в том, что если я ставлю входное число больше или равно 1024, двоичное число будет неправильно. Поэтому с помощью инструмента отладки я обнаружил, что проблема заключается в переменной n, точно в инструкции n=n/2
.
Если вы указали номер 1024 в качестве входного номера, n=n/2
работает нормально, пока программа не достигнет 4 значения n, и для этого значения инструкция n=n/2
не работает, и значение 0 равняется n.
Так что я застрял здесь, и я не знаю, в чем проблема.
'int i = 0; int vettore [i]; 'Это объявит пустой массив. (Что, кстати, незаконно) Я думаю, вы хотели 'int vettore [32]' или что-то ... – leemes
насколько велика 'vettore'? в настоящее время он не содержит элементов – sp2danny
Минимальный тестовый пример. –