在C
int n=100;
printf("%d", (int)(sqrt((double)n)));
当我使用此代码时,它会打印出正确的答案(10)。
但是以下代码始终显示0
int n;
int max = (int)(sqrt((double)n));
printf("%d", max);
为什么答案不同?
答案 0 :(得分:1)
int n=100;
printf("%d", (int)(sqrt((double)n)));
在这种情况下,已知n的值,即100。所以sqrt((double)n)
返回正确的值。
int n;
int max = (int)(sqrt((double)n));
printf("%d", max);
在这里,变量n未初始化。该变量可以保持不确定的值,具体取决于它是在本地(在块内,在这种情况下,n的值将是垃圾值)还是全局(在块外,在此情况下,n的值将为零)声明。 )。始终初始化变量以避免此类错误。