有人能告诉我这个疯狂的c++语句在c#中是什么意思吗?
本文关键字:是什么 意思 语句 c++ 告诉我 疯狂 | 更新日期: 2023-09-27 18:05:13
首先,不,我不是学生…只是一个c#的家伙移植了一个c++库。
这两行疯狂的行是什么意思?它们在c#中相当于什么?我最关心的是size_t和sizeof。不关心static_cast或assert..我知道如何处理它们。
size_t Index = static_cast<size_t>((y - 1620) / 2);
assert(Index < sizeof(DeltaTTable)/sizeof(double));
y是双精度类型,DeltaTTable也是双精度类型[]。提前感谢!
size_t
是一个无符号整数类型的typedef。它用于事物的大小,大小可以是32位或64位。size_t
的特定大小是实现定义的,但它是无符号。
我想在c#中可以使用64位无符号整数类型。
所有sizeof
所做的是返回一个c++类型的字节大小。每种类型占用一定数量的空间,sizeof
返回该大小。
你的代码正在做的是计算DeltaTTable
占用的双精度浮点数(64位浮点数)。从本质上讲,它确保表大于基于y
的某个大小,无论它是什么。
在c#中没有等价的sizeof
,也不需要它。您没有理由将此代码移植到c#。
坏消息是你不能在c#中这样做。没有静态强制转换,只有动态强制转换。不过好消息是,这并不重要。
这两行代码断言索引在表的边界内,这样代码就不会意外地读取一些任意的内存位置。CLR会为您处理这个问题。所以在移植的时候忽略这些行,它们会自动出现在那里。
当然,这是基于基于代码模式的假设。没有关于Y代表什么以及如何使用Index的信息
sizeOf计算DeltaTable类型占用多少内存(以字节为单位)。在c# AFAIK中没有像这样计算大小的等效方法。
我猜size_t应该是c++代码中的struct类型