假设泛型库中的一个函数在任何情况下都想使用长整数(比方说64位),但在我的程序中我想使用短整数(比方说32位).然后我遇到了如下情况:
void f(long unsigned int *a) {
*a = 10;
}
void main(void) {
unsigned int b;
f(&b);
return;
}
我是否正确理解了这实际上不是一个好主意,函数f将覆盖另外32位(内存中b
之后的位),将0
写入其中(正如编译器将unsigned int *
转换为long unsigned int *
)?但是,如果我没有猜错的话,下面的代码将不会被覆盖(正如编译器将long unsigned int
转换为unsigned int
):
long unsigned int f(void) {
return 10;
}
void main(void) {
unsigned int b;
b = f();
return;
}
对吗?
如果函数返回计算的其他部分,并且10
只是计算的一个附加细节,那么第二个实现有一个缺点.