Тема: Приклад з книги Шильдта по створенню безпечного масиву.
// Простий спосiб органiзацiї безпечного масиву.
#include <iostream>
using namespace std;
int &put(int i); // Записуємо значення в масив.
int get(int i); // Зчитуємо значення з масиву.
int vals[10];
int error = -1;
int main()
{
setlocale(LC_CTYPE, "ukr");
put(0) = 10; // Записуємо значення в масив.
put(1) = 20;
put(9) = 30;
cout << get(0) << ' ';
cout << get(1) << ' ';
cout << get(9) << ' ';
// А тепер спецiально генеруємо помилку.
put(12) = 1; // iндекс за межами масиву.
getchar();
}
// Функцiя занесення значення в масив.
int &put(int i)
{
if (10 > i >= 0) // або if(i>=0 && i<10).
return vals[i]; // Повертаємо посилання на i-й елемент.
else {
cout << "Помилка порушення кордонiв!\n";
return error; // Повертаємо посилання на error.
}
}
// Функцiя зчитування значення з масиву.
int get(int i)
{
if (10 > i >= 0) // або if(i>=0 && i<10).
return vals[i]; // Повертаємо посилання на i-й елемент.
else {
cout << "Помилка порушення кордонiв!\n";
return error; // Повертаємо посилання на error.
}
}
Проблема в тому що коли я захотів записати умову:
if(i>=0 && i<10)
на:
if (10 > i >= 0)
Програма не відображає останнього результату:
Помилка порушення кордонiв!.
Де в моєму виразі збій логіки?