簡體   English   中英

C lang中的類型轉換數據打印錯誤

[英]type conversion data printing Error in C lang

在 C

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

當我使用此代碼時,它會打印正確答案 (10)。

但是下面的代碼總是打印 0

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

為什么答案不同?

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 的值將為零) )。 始終初始化變量以避免此類錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM