С++
10-11 класс
|
Фрагмент кода
int value;
int bit[15];
printf("Enter value: ");
scanf("%d",&value); //тут вводим value
printf("\n\nvalue: %d",value); //выводится наше value
bit[15]=(value<0)?1:0; //тут value почему то зануляется
printf("\n\nvalue: %d",value); //выводим уже 0.
вопрос, почему зануляется?
Вот эта строка кода "bit[15]=(value<0)?1:0; //тут value почему то зануляется" называется сокращенной формой условного оператора If - else.
В вашем случае написано:
If (value<0)
{
bit[15]=1;
} else
{
bit[15]=0;
}
Для того чтобы увидеть результат, в Вашем коде нужно изменить эту строку "
Вам никогда не приходило в голову посмотреть, что при описании массива указывается количество его элементов, а сами элементы нумеруются с нуля? Элемента bit[15] не существует; Вы обращаетесь за пределы памяти, отведенной под массив и затираете имеющееся там значение. Видимо, Ваш компилятор как раз там разместил начало переменной value.