第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

(入門級問題,求解答~)關于強制類型轉化的小問題

(入門級問題,求解答~)關于強制類型轉化的小問題

C
TheReal無無 2018-05-13 18:08:44
這個強制類型轉換中Num是臨時的,那他有效條件是啥?緊接著一行有用?還有,Num為什么等于-1#QNANO????這是什么鬼
查看完整描述

3 回答

?
onemoo

TA貢獻883條經驗 獲得超454個贊

你說的是哪個“強制轉型”?? 從你發(fā)的另一個問題看,你可能對這些概念有些混亂,我一行行解釋吧:

  • double num = 2.5;

    這句代碼是定義了一個 double 類型變量 num,并且賦予初值 2.5

  • int Num = (int)num;

    這句是定義了 int 類型變量 Num,并以 num 初始化。

    這里等號右側是 double 類型,左側是 int 類型,并不相符。這樣等號右側的 double 類型值隱式轉型為左側的 int 類型,這個轉型后的值會被作為初值賦予 Num。所以這里本來就會發(fā)生隱式轉型,那個“強制轉型 (int)”是沒有必要的,可以去掉。

    還有一點要注意:我寫的是“...右側的 double 類型值會隱式轉型...”。隱式轉型并不會改變 num 的類型,num 的類型永遠是聲明時的那個(也就是 double)。隱式轉型只是把 num 這個變量的值(浮點值 2.5)轉為整形值 2

    我不知道你問的“有效條件”是什么意思。你的理解可能有誤,Num 不是臨時的!Num就是個正常的 int 類型變量。只是在初始化 Num 時、在確定初值的過程中,等號右側的 num 的值發(fā)生了一次隱式轉型而已(再強調一下,這對 num 不會有任何影響)

  • printf("...%d\n", Num);

    printf 打印變量的值需要搭配相應的“格式化指示符”。Num 是 int 型,對應的格式化指示符是 %d,所以這句代碼沒有問題,打印出了 2

  • printf("...%f\n", Num);

    那么這句就有問題了!

    Num 是 int 型,不應該用 %f,所以輸出的內容不正確。

    至于那個 #QNANO,它是提示“不是合法的浮點值”,這是當然的,因為 Num 根本就不是浮點類型。其實你不用管這個,你只要知道你用了不正確的格式化指示符,printf 就不能打印出正確的內容,打出什么奇怪的東西都有可能。

查看完整回答
1 反對 回復 2018-05-14
?
0云川0

TA貢獻4條經驗 獲得超0個贊

編譯器問題嗎

查看完整回答
反對 回復 2018-05-14
?
0云川0

TA貢獻4條經驗 獲得超0個贊

好像沒毛病啊

查看完整回答
反對 回復 2018-05-14
  • 3 回答
  • 0 關注
  • 1365 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號