Avatar ·

Um código que é válido tanto em C quanto em C++ pode se comportar de forma diferente?

Olá a todos! Sou um desenvolvedor C++ iniciante, mas na universidade nos obrigavam a escrever em C. Agora notei algo estranho: às vezes o mesmo código compila tanto em C quanto em C++, mas funciona de maneiras completamente diferentes. Por exemplo, escrevi um pequeno programa que usa sizeof para um string literal e o compara com um ponteiro. Aqui está o código: ```c #include int main() { char arr[] = "Hello"; char *ptr = "Hello"; if (sizeof(arr) == sizeof(ptr)) { printf("Tamanhos iguais\n"); } else { printf("Tamanhos diferentes\n"); } return 0; } ``` Em C++ recebi a mensagem "Tamanhos diferentes", e em C também "Tamanhos diferentes", mas ouvi dizer que existem exemplos onde o comportamento difere drasticamente. Um código que é válido tanto em C quanto em C++ pode se comportar de forma diferente? Se sim, dê um exemplo concreto com explicação. Desde já agradeço! <<>>

Sim, esse código existe: o exemplo clássico é a conversão implícita de void