3 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
字母100000000000組成一個(gè)文字整數(shù)常量,但該值對(duì)于type而言太大int。您需要使用后綴來(lái)更改文字的類型,即
long long num3 = 100000000000LL;
后綴LL使文字變?yōu)閠ype long long。C不夠“聰明”,無(wú)法從左側(cè)的類型得出結(jié)論,該類型是文字本身的屬性,而不是使用它的上下文。

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
這取決于您以哪種模式進(jìn)行編譯。long long不是C ++標(biāo)準(zhǔn)的一部分,而是(通常)僅作為擴(kuò)展支持。這會(huì)影響文字的類型。如果int足夠大以表示數(shù)字,則不帶任何后綴的十進(jìn)制整數(shù)常量始終為int類型,否則為long。如果該數(shù)字太長(zhǎng)了,結(jié)果將是實(shí)現(xiàn)定義的(可能只是為了向后兼容而被截?cái)嗟膌ong int類型的數(shù)字)。在這種情況下,您必須顯式使用LL后綴來(lái)啟用long long擴(kuò)展(在大多數(shù)編譯器上)。
下一個(gè)C ++版本將正式支持long格式,除非您明確希望將文字類型的類型強(qiáng)制設(shè)置為long格式,否則您將不需要任何后綴。如果數(shù)字不能用長(zhǎng)整數(shù)表示,則即使沒(méi)有LL后綴,編譯器也會(huì)自動(dòng)嘗試使用long long。我相信這也是C99的行為。
- 3 回答
- 0 關(guān)注
- 612 瀏覽
添加回答
舉報(bào)