簡體   English   中英

不同類型變量的划分| C++ 中的隱式類型轉換

[英]Division between variable of different types | implicit type casting in C++

因為我是 C++ 的菜鳥,所以 Udacity 測驗敘述:

以下程序產生錯誤的輸出。 要修復程序,您需要更改至少兩種變量類型: answer和一個除數。

 #include <iostream>
 int main(void)
 {
     int numerator = 4; // no need to change type
     float denominator = 5.0; // changed to float
     float answer = 0.0; // changed to float

     answer = numerator / denominator;
     std::cout<<"answer = "<<answer; // answer = 0.8
     return 0;
 }

問題:這里的類型轉換是如何暗示的,以及為什么要在相等的兩邊更改變量類型。

為什么不換只answer 按照指示,我嘗試將float設置為僅answerdenominator 現在它可以工作了,但我想學習 C++ 中的隱式類型轉換。

PS:代碼是優達學城的一個小測驗

如果表達式的兩個操作數

numerator / denominator

有整數類型那么表達式的結果也有公共整數。

要使浮點類型的結果之一,操作數必須是浮點類型。

另一方面,如果變量結果具有整數類型,則可能會截斷浮點類型表達式

numerator / denominator

除法發生在分配之前。 兩個整數相除的結果是一個整數。 這就是截斷發生的地方,所以我們知道至少有一個操作數需要浮點數才能保持精度。

然后,如您所知,分配發生了。 整數變量無法保持浮點結果的精度,因此也需要浮點數。

這意味着如果除法的操作數不相同,那么一個將被提升以匹配另一個。 喜歡

 int numerator = 4;
 float denominator = 5;

關於划分:

numerator / denominator;

numerator將被提升為浮動。 正如這個答案中所指出的

float / int =>  float / float = float
int / int = int

暫無
暫無

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

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