Статистика
Всего в нашей базе более 4 327 660 вопросов и 6 445 975 ответов!

С++

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.

вопрос, почему зануляется?

Esila961 17 февр. 2017 г., 6:36:35 (7 лет назад)
Рейтинг
+ 0 -
0 Жалоба
+ 0 -
Castet1973
17 февр. 2017 г., 7:52:15 (7 лет назад)

Вот эта строка кода "bit[15]=(value<0)?1:0; //тут value почему то зануляется" называется сокращенной формой условного оператора If - else. 
В вашем случае написано: 
If (value<0)
{
  bit[15]=1;
} else
{
  bit[15]=0;
}
Для того чтобы увидеть результат, в Вашем коде нужно изменить эту строку "

+ 0 -
Nastya1222
17 февр. 2017 г., 9:44:22 (7 лет назад)

Вам никогда не приходило в голову посмотреть, что при описании массива указывается количество его элементов, а сами элементы нумеруются с нуля? Элемента bit[15] не существует; Вы обращаетесь за пределы памяти, отведенной под массив и затираете имеющееся там значение. Видимо, Ваш компилятор как раз там разместил начало переменной value.

Ответить

Читайте также



Вы находитесь на странице вопроса "С++", категории "информатика". Данный вопрос относится к разделу "10-11" классов. Здесь вы сможете получить ответ, а также обсудить вопрос с посетителями сайта. Автоматический умный поиск поможет найти похожие вопросы в категории "информатика". Если ваш вопрос отличается или ответы не подходят, вы можете задать новый вопрос, воспользовавшись кнопкой в верхней части сайта.