Avatar ·

¿Puede un código válido tanto en C como en C++ comportarse de manera diferente?

¡Hola a todos! Soy un desarrollador principiante de C++, pero en la universidad nos obligaban a escribir en C. Ahora he notado algo extraño: a veces el mismo código se compila tanto en C como en C++, pero funciona de manera completamente diferente. Por ejemplo, escribí un pequeño programa que usa sizeof para un string literal y lo compara con un puntero. Aquí está el código: ```c #include int main() { char arr[] = "Hello"; char *ptr = "Hello"; if (sizeof(arr) == sizeof(ptr)) { printf("Los tamaños son iguales\n"); } else { printf("Los tamaños son diferentes\n"); } return 0; } ``` En C++ obtuve el mensaje "Los tamaños son diferentes", y en C también "Los tamaños son diferentes", pero he oído que hay ejemplos donde el comportamiento difiere drásticamente. ¿Puede un código que es válido tanto en C como en C++ comportarse de manera diferente? Si es así, proporcione un ejemplo concreto con explicación. ¡Gracias de antemano! <<>>

Sí, ese código existe: el ejemplo clásico es la conversión implícita de void