sto ottenendo un comportamento insolito con il mio codice, che è la seguentecomportamento dell'operatore sizeof in C
#include<stdio.h>
struct a
{
int x;
char y;
};
int main()
{
struct a str;
str.x=2;
str.y='s';
printf("%d %d %d",sizeof(int),sizeof(char),sizeof(str));
getch();
return 0;
}
Per questo pezzo di codice che sto ottenendo l'output:
4 1 8
Come del mio conoscenza la struttura contiene una variabile intera di dimensione 4 e una variabile char di dimensione 1, quindi la dimensione della struttura a dovrebbe essere 5. Ma come mai la dimensione della struttura è 8. Sto usando il compilatore di Visual C++. Perché questo comportamento?
Negli argomenti 'printf()' dovresti lanciare i valori 'sizeof' in' (int) '... o' (unsigned long) 'e usare' "% lu" '... o, se tu avere C99, usare '"% zu "'. – pmg
@ pmg: esattamente. Perché 'sizeof()' restituisce un valore di tipo 'size_t'. –