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
No answers yet.
Faça login para deixar uma resposta