2012-12-20 162 views
0
  1. 我可以從long long int變量中減去int變量嗎?從long long int中減去int int

  2. 萬一我做不到:我需要存儲比可以存儲在int數字的比較大的數字,我不希望使用doublefloat因爲我需要整數,我該怎麼辦?我不想全部使用long long int。有沒有辦法將int轉換爲long long int,以便我可以進行減法?

+2

當然寫'int main(){long long int x = 100012u1928109111211LL; int y = 1234; printf(「%lld \ n」,x-y);返回0; }'和'gcc -Wall -std = c99 mytest.c -o mytest'比這個問題更短? –

+0

@MatsPetersson - 當然,它更短,但不會編譯。

+0

你的意思是它缺少#include - 它仍然會更短... –

回答

5

是的,你可以。 int將通過常規算術轉換轉換爲long long int爲減法,使兩個操作數具有相同的整數轉換等級,並且結果也將是long long int

這是通過§5/ 9覆蓋:

意想不到算術或枚舉類型原因的轉化率和產率結果類型的操作數以類似的方式,許多二進制運算符。目的是產生一個共同的類型,這也是結果的類型。這種模式被稱爲通常的算術轉換,其被定義如下:

[...]
如果這兩個操作數已簽署整數類型或兩者都具有無符號整數類型,則操作數 用的較小的類型整數轉換等級應轉換爲等級較高的操作數的類型。
[...]

long long int的排名比的int等級更高。

1

是的,你可以從long long int減去int。由於int會自動加寬,因此您不需要任何明確的轉換。

1
  1. 是;結果是long long(直到您將其轉換爲其他內容;實際上,它是long long,但您可能會將結果轉換爲其他類型)。

  2. N/A。