int i, nhashprime = nextprime(2 * hashprime) ;
此行是否等于
int i, nhashprime;
i = nextprime(2 * hashprime);
nhashprime = i;
还是做其他事情?
答案 0 :(得分:6)
没有。您的代码仅设置nhashprime
。 i
将被取消初始化。
答案 1 :(得分:5)
int i, nhashprime = nextprime(2 * hashprime);
装置
int i;
int nhashprime = nextprime(2 * hashprime);
答案 2 :(得分:3)
这会初始化nhashprime
而非i
。 int
部分同时适用于i
和nhashprime
,但该作业仅适用于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
未定义。