# Unsafe code: get data type size

```

using System;

class MainEntryPoint
{
static unsafe void Main()
{
int x=100;
short y = -19;
byte y2 = 45;
double z = 31.5;
int *pX = &amp;x;
short *pY = &amp;y;
double *pZ = &amp;z;

Console.WriteLine("Address of x is 0x{0:X}, size is {1}, value is {2}", (uint)&amp;x, sizeof(int), x);
Console.WriteLine("Address of y is 0x{0:X}, size is {1}, value is {2}", (uint)&amp;y, sizeof(short), y);
Console.WriteLine("Address of y2 is 0x{0:X}, size is {1}, value is {2}",(uint)&amp;y2, sizeof(byte), y2);
Console.WriteLine("Address of z is 0x{0:X}, size is {1}, value is {2}", (uint)&amp;z, sizeof(double), z);
Console.WriteLine("Address of pX=&amp;x is 0x{0:X}, size is {1}, value is 0x{2:X}",(uint)&amp;pX, sizeof(int*), (uint)pX);
Console.WriteLine("Address of pY=&amp;y is 0x{0:X}, size is {1}, value is 0x{2:X}",(uint)&amp;pY, sizeof(short*), (uint)pY);
Console.WriteLine("Address of pZ=&amp;z is 0x{0:X}, size is {1}, value is 0x{2:X}",(uint)&amp;pZ, sizeof(double*), (uint)pZ);

*pX = 20;
Console.WriteLine("After setting *pX, x = {0}", x);
Console.WriteLine("*pX = {0}", *pX);

pZ = (double*)pX;
Console.WriteLine("x treated as a double = {0}", *pZ);
}
}

```