¿Se puede declarar el tamaño de la array como un número negativo?

¿Qué pasará si declaramos Array size como un valor negativo?

Primero intentemos declarar un tamaño de array como negativo. 

C++

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // Declare array with negative size
    int arr[-2];
    arr[0] = -1;
 
    return 0;
}

Intenta ejecutar el código anterior. Verá que esto está dando un error que especifica que el error se debe al tamaño negativo de la array.

Error del compilador:

prog.cpp: In function ‘int main()’:
prog.cpp:7:15: error: size of array ‘arr’ is negative
     int arr[-2];
               ^

¿Por qué no podemos declarar una array con un tamaño negativo?

Hemos visto que declarar el tamaño de la array da un error. Pero la pregunta es porqué»? 

De acuerdo con la convención de declaración de array, es obligatorio que cada vez que se evalúe una array tenga un tamaño mayor que 0. Declarar el tamaño de array negativo rompe esta condición de «deberá». Es por eso que esta acción da un error.

¿Cómo manejan los diferentes lenguajes de programación la declaración del tamaño de la array con valor negativo?

Veamos cómo se comporta la declaración de array de tamaño negativo en diferentes lenguajes de programación.

En el caso de Python:

Python3

from numpy import ndarray
b = ndarray((5,), int)
b = [1, 2, 3, 4, 5]
print(b)
a = ndarray((-5,), int)

Producción:

[1, 2, 3, 4, 5]
Traceback (most recent call last):
  File "main.py", line 5, in <module>
    a = ndarray((-5,),int)
ValueError: negative dimensions are not allowed


** Process exited - Return Code: 1 **
Press Enter to exit terminal

En el caso del lenguaje C

C

#include <stdio.h>
 
int main()
{
    // Declaring array with negative size
    int b[-5] = { 0 };
    printf("%d", b[0]);
    return 0;
}

Producción:

./e384ec66-a75a-4a93-9af5-52e926ec600a.c: In function 'main':
./e384ec66-a75a-4a93-9af5-52e926ec600a.c:4:8: error: size of array 'b' is negative
    int b[-5]={0};
        ^

En caso de C++

C++

#include <iostream>
using namespace std;
int main(){
  int arr[-5]={0};
  cout<<arr[0];
}

Producción:

./72b436a2-f3be-4cfb-bf0a-b29a62704bb8.cpp: In function 'int main)':
./72b436a2-f3be-4cfb-bf0a-b29a62704bb8.cpp:4:13: error: size of array 'arr' is negative
   int arr[-5]={0};
             ^

En el caso de Java

Java

public class NegativeArraySizeExceptionExample {
    public static void main(String[] args)
    {
        // Declaring array with negative size
        int[] array = new int[-5];
        System.out.println(array.length);
    }
}

Producción:

Exception in thread "main" java.lang.NegativeArraySizeException: -5
    at NegativeArraySizeException.mainNegativeArraySizeException.java:3)

En el caso de C#

C#

using System;
 
public class NegativeArraySizeExceptionExample{
 
    static public void Main (){
       // Declaring array with negative size
        int[] array = new int[-5];
        Console.Write(array.Length);
    }
}

Producción:

prog.cs(7,32): error CS0248: Cannot create an array with a negative size

Publicación traducida automáticamente

Artículo escrito por surbhikumaridav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *