为什么在 for 循环中定义 i 时以下内容不起作用
#include <stdio.h>
#include <math.h>
int N;
long long int H() {
long long int ans=0;
int i, lt;
if(N <= 0)
return 0;
for(i=1, lt=sqrt(N); i<=lt; i+=1) /* if i=1 is replaced by int i=1 => garbage */
ans+=(N/i);
ans = 2*ans-(lt*lt);
return ans;
}
int main() {
scanf("%d",&N);
printf("%lld\n",H());
return 0;
}
在顶部定义时输出
Input: 8
Output: 20
在 for 循环中定义时输出/* for (int i=1 ..) */
Input: 8
Output: 1243068212
我看到我收到警告lt is initialized when used here
,为什么?