在这个问题,有人建议意见,我应该不会投的结果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)
为什么会这样呢?
我们知道这sizeof是一个用于计算任何数据类型和表达式大小的运算符,当操作数是表达式时,括号可以省略.
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第一次使用sizeof是错误的,而其他人则是对的.
当使用gcc编译时,将给出以下错误消息:
main.c:5:9: error: expected expression before ‘int’
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么C标准不允许这种操作.会不会sizeof int引起任何歧义?