c和vb for运行结束不一样,帮看一下
二个运行vb i= 6103515625 /c i:1808548329
vb:
Private Sub Command1_Click()
Dim k1, k2, k3, k4, k5, k6, k7 As Integer
Debug.Print Now
For k1 = 1 To 25
For k2 = 2 To 26
For k3 = 3 To 27
For k4 = 4 To 28
For k5 = 5 To 29
For k6 = 6 To 30
For k7 = 7 To 31
i = i + 1
Next
Next
Next
Next
Next
Next
Next
Debug.Print "i="; i
Debug.Print Now
End Sub
c:
#include
#include
int main()
{
int i=0,k1,k2,k3,k4,k5,k6,k7;
int kk100=121;
for(k1=1;k1<=25;k1++)
{
for(k2=2;k2<=26;k2++)
{
for(k3=3;k3<=27;k3++)
{
for(k4=4;k4<=28;k4++)
{
for(k5=5;k5<=29;k5++)
{
for(k6=6;k6<=30;k6++)
{
for(k7=7;k7<=31;k7++)
{
i++;
}
}
}
}
}
}
}
printf("i:%d\n",i);
return 0;
}
25^7 = 6103515625
VB 结果是对的。
C 的 int i
数据溢出,导致非预期的结果。
for 到28,第四个就不对了,
vb代码中i变量没有设定初始化的值,没有初始化的变量值是不可预测的
怎样设定初始化的值?