namespace ConsoleApplication1
{
class Program
{
struct CurrencyStruct
{
public long Dollars;
public int Cents;
public char a;
}
static unsafe void Main()
{
Console.WriteLine("size is" + sizeof(CurrencyStruct));
Console.ReadKey();
}
}
}
这个编译的结果实际是16啊但是这个是
namespace ConsoleApplication1
{
class Program
{
struct CurrencyStruct
{
public int Cents;
public long Dollars;
public char a;
}
static unsafe void Main()
{
Console.WriteLine("size is" + sizeof(CurrencyStruct));
Console.ReadKey();
}
}
} 这个是24,两者有什么区别啊?
{
class Program
{
struct CurrencyStruct
{
public long Dollars;
public int Cents;
public char a;
}
static unsafe void Main()
{
Console.WriteLine("size is" + sizeof(CurrencyStruct));
Console.ReadKey();
}
}
}
这个编译的结果实际是16啊但是这个是
namespace ConsoleApplication1
{
class Program
{
struct CurrencyStruct
{
public int Cents;
public long Dollars;
public char a;
}
static unsafe void Main()
{
Console.WriteLine("size is" + sizeof(CurrencyStruct));
Console.ReadKey();
}
}
} 这个是24,两者有什么区别啊?
{
struct S1
{
public long Dollars; // 8
public int Cents; // 4
public char a; // 2 (+2)
} struct S2
{
public int Cents; // 4 (+4)
public long Dollars; // 8
public char a; // 2 (+6)
} static unsafe void Main()
{
Console.WriteLine(sizeof(S1)); // 16
Console.WriteLine(sizeof(S2)); // 24
}
}
struct CurrencyStruct = 2
{
}struct CurrencyStruct = 2
{
public char a; = 2
}struct CurrencyStruct = 8
{
public int Cents; = 4
public char a; = 4
}struct CurrencyStruct = 16
{
public long Cents; = 8
public int a; = 8
}struct CurrencyStruct = 16
{
public long Cents; = 8
public char a; = 8
}
LZ的就不清楚了,期待楼主早日研究出成果,福泽苍生!
{
public long Dollars; // 8
public int Cents; // 4,它要放在4的整倍数上,没问题。
public char a; // 2 (+2),最后要补齐到8(结构中最大元素的大小)的整倍数。
}
struct S2
{
public int Cents; // 4 (+4)
public long Dollars; // 8,它要放在8的整倍数上,所以前面要补4。
public char a; // 2 (+6)),最后要补齐到8(结构中最大元素的大小)的整倍数。
}