类型转换数据打印C语言错误

时间:2019-02-12 06:04:37

标签: c type-conversion

在C

int n=100;
printf("%d", (int)(sqrt((double)n)));

当我使用此代码时,它会打印出正确的答案(10)。

但是以下代码始终显示0

int n; 
int max = (int)(sqrt((double)n));
printf("%d", max);

为什么答案不同?

1 个答案:

答案 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的值将为零)声明。 )。始终初始化变量以避免此类错误。