相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果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 malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

为什么sizeof int是错误的,而sizeof(int)是对的?

我们知道这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引起任何歧义?

c c++ sizeof

96
推荐指数
3
解决办法
6675
查看次数

标签 统计

c ×2

c++ ×1

casting ×1

malloc ×1

sizeof ×1