这条线是设置两个vars还是只设置一个?

时间:2011-05-24 17:07:00

标签: c

int i, nhashprime = nextprime(2 * hashprime) ;

此行是否等于

int i, nhashprime;
i = nextprime(2 * hashprime);
nhashprime = i;

还是做其他事情?

5 个答案:

答案 0 :(得分:6)

没有。您的代码仅设置nhashprimei将被取消初始化。

答案 1 :(得分:5)

int i, nhashprime = nextprime(2 * hashprime);

装置

int i;
int nhashprime = nextprime(2 * hashprime);

答案 2 :(得分:3)

这会初始化nhashprime而非iint部分同时适用于inhashprime,但该作业仅适用于nhashprime。代码等同于

int i;
int nhashprime = nextprime(2 * hashprime);

将多个声明组合成一个通常不是一个好主意,除了简单类型和简单类型的简单情况:

int i, j, k;

请特别注意,指针标记不会分配到多个标识符:

int *p, i;

应该避免,等同于

int *p;
int i;

答案 3 :(得分:1)

(Carl发布了正确的答案。我发布此答案而不是评论只是为了保留格式。)

int i, nhashprime = nextprime(2 * hashprime);

相当于:

int i;
int nhashprime = nextprime(2 * hashprime);

答案 4 :(得分:0)

第一个设置nhashprime,同时保留i未定义。当然,如果hashprime未定义(我没有看到任何先例初始化),那么可能还会nhashprime未定义。