#include <stdio.h>
#include <stdint.h>
#define SPIAZZAMENTO 6
int main() {
char b[256];
void *p;
/* tipo di dati a 8 bit */
printf( "\nimposto p=b=0x%p\n", p=b );
printf( "\napplico a p uno spiazzamento di %d int8_t\n", SPIAZZAMENTO );
p = ((int8_t*)p) + SPIAZZAMENTO;
printf( "ora p e' avanzato di %d bytes rispetto a b\n",
SPIAZZAMENTO*sizeof(int8_t) );
printf( "b=0x%p\tp=0x%p\n", b, p );
printf( "(char*)p-(char*)b=%d bytes\n", (char*)p - (char*)b );
printf( "(int8_t*)p-(int8_t*)b=%d posizioni\n", (int8_t*)p-(int8_t*)b );
/* tipo di dati a 16 bit */
printf( "\nimposto p=b=0x%p\n", p=b );
printf( "applico a p uno spiazzamento di %d int16_t\n", SPIAZZAMENTO );
p = ((int16_t*)p) + SPIAZZAMENTO;
printf( "ora p e' avanzato di %d bytes rispetto a b\n",
SPIAZZAMENTO*sizeof(int16_t) );
printf( "b=0x%p\tp=0x%p\n", b, p );
printf( "(char*)p-(char*)b=%d bytes\n", (char*)p - (char*)b );
printf( "(int16_t*)p-(int16_t*)b=%d posizioni\n", (int16_t*)p-(int16_t*)b );
/* tipo di dati a 32 bit */
printf( "\nimposto p=b=0x%p\n", p=b );
printf( "applico a p uno spiazzamento di %d int32_t\n", SPIAZZAMENTO );
p = ((int32_t*)p) + SPIAZZAMENTO;
printf( "ora p e' avanzato di %d bytes rispetto a b\n",
SPIAZZAMENTO*sizeof(int32_t) );
printf( "b=0x%p\tp=0x%p\n", b, p );
printf( "(char*)p-(char*)b=%d bytes\n", (char*)p - (char*)b );
printf( "(int32_t*)p-(int32_t*)b=%d posizioni\n", (int32_t*)p-(int32_t*)b );
/* tipo di dati a 64 bit */
printf( "\nimposto p=b=0x%p\n", p=b );
printf( "applico a p uno spiazzamento di %d int64_t\n", SPIAZZAMENTO );
p = ((int64_t*)p) + SPIAZZAMENTO;
printf( "ora p e' avanzato di %d bytes rispetto a b\n",
SPIAZZAMENTO*sizeof(int64_t) );
printf( "b=0x%p\tp=0x%p\n", b, p );
printf( "(char*)p-(char*)b=%d bytes\n", (char*)p - (char*)b );
printf( "(int64_t*)p-(int64_t*)b=%d posizioni\n", (int64_t*)p-(int64_t*)b );
return 0;
}