Comparación de tipos de datos booleanos en C++ y Java

El tipo de datos booleano es uno de los tipos de datos primitivos tanto en C++ como en Java. Aunque puede parecer el más fácil de todos los tipos de datos, ya que solo puede tener dos valores: verdadero o falso , pero seguramente es complicado ya que existen ciertas diferencias en su uso tanto en Java como en C++, que si no se tiene cuidado, puede resultar en un error. La diferencia en su uso en C++ y Java son-

  1. Declaración: la declaración del tipo de datos booleano en C++ implica el uso de la palabra clave bool , mientras que la declaración en Java se realiza mediante la palabra clave booleano .
    Código C++:

    #include<iostream>
    using namespace std;
    int main()
    {
        bool a = true;
          
        // Syntax of Java 
        // boolean b = false; 
          
        return 0;

    Código Java:

    class A
    {
        public static void main(String args[])
        {
            boolean a = true;
              
            // Syntax of C++
            // bool b = false;
        }
    }
  2. Valor predeterminado: el valor predeterminado es el valor inicialmente almacenado en la variable, cuando se declara, pero no se inicializa en ningún valor. El valor predeterminado del tipo de datos booleano en Java es falso, mientras que en C++ no tiene un valor predeterminado y contiene un valor basura (solo en el caso de variables globales, tendrá un valor predeterminado falso).

    Código C++:

    #include<iostream>
    using namespace std;
    int main()
    {
        // Declaring a boolean type array in C++
        bool a[5]; 
       
        int i;
        for (i=0; i<5; ++i)
        {
            cout << a[i] << " ";
        }
        return 0;
    }

    Todos los valores almacenados en la array en el programa anterior son valores basura y no son fijos.

    Código Java:

    class A
    {
        public static void main(String args[])
        {
            // Declaring a boolean type array in Java
            boolean a[];
            a = new boolean[5];
      
            int i;
            for(i=0; i<5; ++i)
            {
                System.out.println(a[i]);
            }
        }
    }

    Producción:

    false
    false
    false
    false
    false
    

    Todos los valores en la array a serán falsos por defecto, como se ilustra en el resultado anterior.

  3. Uso en expresiones matemáticas: una diferencia importante es que las variables de tipo de datos booleanos no se pueden usar en expresiones matemáticas en Java, ya que darán un error, mientras que se pueden usar fácilmente en C++.

    El motivo de este comportamiento es que las variables booleanas no se convierten en valores enteros (0 o 1) en Java, por lo que no se pueden usar de esa manera.

    Código C++:

    #include<iostream>
    using namespace std;
    int main()
    {
        int a;
        bool b = true;
        bool c = false;
        a = b + c;
        cout << a;
        return 0;
    }

    Producción:

    1
    

    La salida será 1, ya que verdadero se convertirá en valor 1 y falso se convertirá en valor 0, por lo que almacenará 1, mientras que el mismo código dará un error en Java, como se muestra a continuación:

    Código Java:

    class A
    {
        public static void main(String args[])
        {
            int a;
            boolean b = true;
            boolean c = false;
      
            //The following line will give an error
            a = b + c;           
      
            System.out.println(a);
        }
    }
  4. Uso con operadores relacionales: en Java, las variables booleanas no se pueden usar con operadores relacionales como <, >, <= y >= , mientras que en C++ se pueden usar de esta manera. Sin embargo, se pueden usar con los operadores == y != tanto en Java como en C++.

    Esto puede atribuirse al hecho de que los operadores relacionales operan en valores numéricos y las variables booleanas no se almacenan como valores numéricos en Java, pero se almacenan así en C++ ( falso se almacena como 0 y verdadero como 1).

    Código C++:

    #include<iostream>
    using namespace std;
    int main()
    {
        bool a = true;
        bool b = false;
        if (a > b)
        {
            cout << "a is greater than b";  
        }    
        else
        {
            cout << "a is smaller than b";
        }    
        return 0;
    }

    Producción:

    a is greater than b

    Código Java:

    class a
    {
        public static void main(String args[])
        {
            boolean a = true;
            boolean b = false;
      
            //The following line will give an error
            if (a > b)
            {         
                System.out.println("a is greater than b");
            }
            else
            
                System.out.println("a is smaller than b");
            }
        }
    }
  5. Valor de punto flotante: en C++, los valores enteros flotantes se pueden asignar fácilmente a una variable booleana, ya que se convertirán implícitamente en booleanos, mientras que hacerlo en Java dará como resultado un error.

    Código C++:

    #include<iostream>
    using namespace std;
    int main()
    {
        // storing integer value in bool type variable
        bool a = 7;  
      
        // storing floating value in bool type variable
        bool b = 7.0;
      
        cout << a << " " << b;
        return 0;
    }

    Producción:

    1 1

    La salida anterior da como resultado que almacenar cualquier valor en una variable booleana que no sea 0, dará como resultado que se almacene 1 en esa variable.

    Código Java:

    class a
    {
        public static void main(String args[])
        {
            // invalid assignment in Java
            boolean a = 7
      
            // invalid assignment in Java    
            boolean b = 7.0;      
      
            System.out.println(a);
            System.out.println(b);
        }
    }
  6. El tamaño del tipo de datos booleano en C++ es de 1 byte, mientras que el tamaño del booleano en Java no está definido con precisión y depende de la máquina virtual de Java (JVM).

    Los valores booleanos en Java siempre toman más de un byte, pero cuánto más depende de dónde se almacena el valor: en la pila o en el montón. La JVM utiliza una celda de pila de 32 bits, lo que hará que cada valor booleano ocupe la celda de pila completa de 32 bits. Sin embargo, el tamaño de los valores booleanos en el montón depende de la implementación.

  7. Este artículo es una contribución de Mrigendra Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

    Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *