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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在C / C ++中很久很久

在C / C ++中很久很久

C++ C
慕神8447489 2019-11-28 10:39:20
我正在GNU的C ++編譯器上嘗試此代碼,但無(wú)法理解其行為:#include <stdio.h>;int main(){    int  num1 = 1000000000;    long num2 = 1000000000;    long long num3;    //num3 = 100000000000;    long long num4 = ~0;    printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));    printf("%d %ld %lld %llu", num1, num2, num3, num4);    return 0;}當(dāng)我取消注釋注釋行時(shí),代碼將無(wú)法編譯并給出錯(cuò)誤:錯(cuò)誤:整數(shù)常量對(duì)于長(zhǎng)型而言太大但是,如果代碼按原樣編譯并執(zhí)行,它將產(chǎn)生比10000000000大得多的值。為什么?
查看完整描述

3 回答

?
ABOUTYOU

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é)論,該類型是文字本身的屬性,而不是使用它的上下文。


查看完整回答
反對(duì) 回復(fù) 2019-11-28
?
慕桂英3389331

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的行為。


查看完整回答
反對(duì) 回復(fù) 2019-11-28
  • 3 回答
  • 0 關(guān)注
  • 612 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)