在这个问题,有人建议意见,我应该不会投的结果malloc,即
int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
而不是:
int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
对于下面的C代码,比较int指针a和b的定义;
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *a=malloc(sizeof(int));
int *b=(int *)malloc(sizeof(int));
return(0);
}
Run Code Online (Sandbox Code Playgroud)
以任何方式更好地类推由malloc函数返回的void类型的指针?或者在分配到左侧的int指针时是自动类型化的吗?在哪种情况下,如果有的话,它是否可以证明是必要的而不仅仅是强制性的?
请说明隐式类型转换,右侧类型转换为左侧类型,是否适用于此处.
我刚刚读到了关于铸造返回值的不良做法malloc.如果我理解正确的话,离开演员是绝对合法的,因为它是隐含的(并且应该留下,因为它可能产生其他问题).那么我的问题是,我什么时候应该施展我的价值观呢?有一些一般规则或什么?例如,此代码编译时没有任何错误gcc -W -Wall(除了未使用bar,但这不是重点):
float foo(void) {
double bar = 4.2;
return bar;
}
int main(void) {
double bar = foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我现在很困惑.有关铸造的良好做法和规则是什么?
谢谢.