¿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