Escriba un programa que produzca diferentes resultados en C y C++

Escriba un programa que compile y se ejecute tanto en C como en C++, pero que produzca resultados diferentes cuando lo compilen los compiladores de C y C++.

Puede haber muchos programas de este tipo, los siguientes son algunos de ellos.

1) Los caracteres literales se tratan de manera diferente en C y C++. En C, los caracteres literales como ‘a’, ‘b’, ..etc se tratan como enteros, mientras que en C++ son caracteres. (Ver esto para más detalles)

Por ejemplo, el siguiente programa produce sizeof(int) como salida en C, pero sizeof(char) en C++.

#include<stdio.h>
int main()
{
  printf("%d", sizeof('a'));
  return 0;
}

2) En C, necesitamos usar la etiqueta de estructura cada vez que declaramos una variable de estructura. En C++, la etiqueta struct no es necesaria. Por ejemplo, supongamos una estructura para Student . En C, debemos usar ‘ struct Student ‘ para las variables de Student . En C++, podemos omitir struct y usar solo ‘ Student ‘.
El siguiente es un programa que se basa en el hecho y produce diferentes resultados en C y C++. Imprime sizeof(int) en C y sizeof(struct T) en C++.

#include <stdio.h>
int T;
   
int main()
{
    struct T { double x; };  // In C++, this T hides the global variable T, 
                            // but not in C
    printf("%d", sizeof(T));
    return 0;
}

3) Los tipos de resultados booleanos son diferentes en C y C++. Gracias a Gaurav Jain por sugerir este punto.

   
// output = 4 in C (which is size of int)
printf("%d", sizeof(1==1)); 
  
// output = 1 in c++ (which is the size of boolean datatype)
cout << sizeof(1==1); 

Este artículo es una contribución de Abhay Rathi . 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 *