Tag: 语言实现

在java中的Shift操作实现

我最近在Java中使用了移位运算符,并注意到>>运算符与C中的>>具有相同的含义。在Java >>有符号移位使第一位保持相同的值。 在Java中,相当于C shift的是>>>运算符。 左移位运算符( << )与C中的相同,只是忽略第一位。 我想知道的是 为什么要做这个改变? 为什么符号不一致所以>>和<>>和<<<是无符号的? 签名class次运营商有用吗?

C:`const`关键字的行为

我被告知如果我在ANSI-C中编码以按照将使用变量的顺序声明,断言指针不是null并且索引在边界内,并且在使用变量之前初始化。 如果我声明一个const,我可以在一个断言和代码块后初始化它吗? 在Java中,最终的初始化必须在声明时进行,但是通过ANSI-C实现它是一致的,我可以初始化const一次但不一定在声明时?

了解memcpy()的实现

我正在寻找memcpy.c的实现,我发现了一个不同的memcpy代码。 我不明白为什么他们这样做(((地址)s)|((ADDRESS)d)| c)&(sizeof(UINT) – 1) #if !defined(__MACHDEP_MEMFUNC) #ifdef _MSC_VER #pragma function(memcpy) #undef __MEMFUNC_ARE_INLINED #endif #if !defined(__MEMFUNC_ARE_INLINED) /* Copy C bytes from S to D. * Only works if non-overlapping, or if D < S. */ EXTERN_C void * __cdecl memcpy(void *d, const void *s, size_t c) { if ((((ADDRESS) s) | ((ADDRESS) d) | c) […]

如何在C中实现C ++虚函数

C ++语言提供virtualfunction。 在纯C语言实现的约束下,如何实现类似的效果?