LINUX.ORG.RU

История изменений

Исправление X512, (текущая версия) :

C:

#include <stdio.h>

int main()
{
  int arr[4];
  int a, b, c;
  a = 0;
  b = 4;
  c = a + (b - a)/2;
  for (int i = a; i < c; i++) arr[i] = -1;
  for (int i = c; i < b; i++) arr[i] = 1;
  for (int i = a; i < b; i++) printf("%d\n", arr[i]);
  return 0;
}

Вывод:

-1
-1
1
1

Lua:

arr = {}
a = 1
b = 4
c = a + (b - a) // 2
for i = a,c-1 do arr[i] =  -1 end
for i = c,b   do arr[i] = 1 end

for i = a,b do
  print(arr[i])
end

Вывод:

-1
1
1
1

Так что fail. Причём в вашем случае даже чётная длина некорректно обрабатывается. Получилась наглядная демонстрация высокой вероятности ошибок при использовании индексов с 1.

Исправление X512, :

C:

#include <stdio.h>

int main()
{
  int arr[4];
  int a, b, c;
  a = 0;
  b = 4;
  c = a + (b - a)/2;
  for (int i = a; i < c; i++) arr[i] = -1;
  for (int i = c; i < b; i++) arr[i] = 1;
  for (int i = a; i < b; i++) printf("%d\n", arr[i]);
  return 0;
}

Вывод:

-1
-1
1
1

Lua:

arr = {}
a = 1
b = 4
c = a + (b - a) // 2
for i = a,c-1 do arr[i] =  -1 end
for i = c,b   do arr[i] = 1 end

for i = a,b do
  print(arr[i])
end

Вывод:

-1
1
1
1

Так что fail. Причём в вашем случае даже чётная длина некорректно обрабатывается.

Исходная версия X512, :

C:

#include <stdio.h>

int main()
{
  int arr[4];
  int a, b, c;
  a = 0;
  b = 4;
  c = a + (b - a)/2;
  for (int i = a; i < c; i++) arr[i] = -1;
  for (int i = c; i < b; i++) arr[i] = 1;
  for (int i = a; i < b; i++) printf("%d\n", arr[i]);
  return 0;
}

Вывод:

-1
-1
1
1

Lua:

arr = {}
a = 1
b = 4
c = a + (b - a) // 2
for i = a,c-1 do arr[i] =  -1 end
for i = c,b   do arr[i] = 1 end

for i = a,b do
  print(arr[i])
end

Вывод:

-1
1
1
1

Та что fail. Причём в вашем случае даже чётная длина некорректно обрабатывается.