Avatar ·

Kann Code, der sowohl in C als auch in C++ gültig ist, sich unterschiedlich verhalten?

Hallo zusammen! Ich bin ein Anfänger in C++ Entwicklung, aber an der Universität mussten wir in C schreiben. Jetzt ist mir eine seltsame Sache aufgefallen: Manchmal wird derselbe Code sowohl in C als auch in C++ kompiliert, verhält sich aber völlig unterschiedlich. Zum Beispiel habe ich ein kleines Programm geschrieben, das sizeof für ein String-Literal verwendet und es mit einem Pointer vergleicht. Hier ist der Code: ```c #include int main() { char arr[] = "Hello"; char *ptr = "Hello"; if (sizeof(arr) == sizeof(ptr)) { printf("Größen sind gleich\n"); } else { printf("Größen sind unterschiedlich\n"); } return 0; } ``` In C++ habe ich die Meldung "Größen sind unterschiedlich" erhalten, und in C ebenfalls "Größen sind unterschiedlich", aber ich habe gehört, dass es Beispiele gibt, bei denen das Verhalten sich grundlegend unterscheidet. Kann Code, der sowohl in C als auch in C++ gültig ist, sich unterschiedlich verhalten? Wenn ja, geben Sie bitte ein konkretes Beispiel mit Erklärung. Vielen Dank im Voraus! <<>>

Ja, solcher Code existiert: Ein klassisches Beispiel ist die implizite Umwandlung von void