2017-02-27 49 views
0

我經常看到這一點,但並非總是如此,當一個已經聲明的變量都有括號中執行一些基本的操作之前的類型。
例如:操作前說(變量類型)是什麼意思?

avg = ((float)sum)/size; //even though all of these variables have already been declared)

vector.push_back((float)*t - x);

什麼時候一個做到這一點,爲什麼?這是什麼意思?

+2

這就是所謂的演員。 – SLaks

+0

你可能猜到這可能是一個操作符。有了這一點,你可以通過查看[優先順序表(http://en.cppreference.com/w/cpp/language/operator_precedence),最終使自己的方式[頁面的詳細信息(HTTP得到你的答案://en.cppreference.com/w/cpp/language/explicit_cast)。 – chris

+0

另外這通常被稱爲「C樣式轉換」(E,G,在用於[明確的類型轉換]參考(http://en.cppreference.com/w/cpp/language/explicit_cast)) - C++引入以'static_cast','reinterpret_cast','const_cast'和'dynamic_cast'爲形式的更多選項 – UnholySheep

回答

3

這被稱爲typecasting,這基本上使得變量充當該類型對於當前操作。它在很多不同的場景中很有用。對於你的第一個例子,浮子的原因大概是這樣兩個數字的分工沒有違約,因爲你想要一個平均整數除法。 (int) 1/ (int) 3 == 0,但(float) 1/ (int) 3 == 0.33...