這個(gè)取值范圍我個(gè)人認(rèn)為了解一下就行妈倔,目前還接觸不到那么深的層次,第一個(gè)直接打印已經(jīng)提供的設(shè)定值看著挺頭暈的疚察,那么長(zhǎng)一串运褪,但是說(shuō)起來(lái)也就是將limits.h頭文件里的幾個(gè)設(shè)定值用printf函數(shù)打印了。而且就大寫字母來(lái)看應(yīng)該是宏定義的狰右。
還有一種是書上寫的按位運(yùn)算得到最大值杰捂。這個(gè)想要理解把上面那些東西弄明白,首先弄明白按位取反~0就變成了機(jī)器允許存在的所有位全是1棋蚌,把他強(qiáng)制轉(zhuǎn)換成無(wú)符號(hào)類型嫁佳。無(wú)符號(hào)類型因?yàn)闆]有正負(fù),最高位也可以計(jì)數(shù)谷暮。而不代表正負(fù)符號(hào)蒿往。要把他變成有符號(hào)的類型就需要右移一位將最高位讓出變成符號(hào)位。因?yàn)樽罡呶蛔詣?dòng)補(bǔ)位應(yīng)該是0湿弦,而機(jī)器又規(guī)定最高位是0時(shí)為正數(shù)瓤漏。為1時(shí)是負(fù)數(shù)所以現(xiàn)在是一個(gè)正數(shù)。然后再將其強(qiáng)制轉(zhuǎn)換成相應(yīng)的有符號(hào)類型颊埃,所以轉(zhuǎn)換后得到的就是取值范圍的最大值蔬充。這里強(qiáng)制轉(zhuǎn)換是優(yōu)先保留低位。高位溢出則舍棄班利。
這種位運(yùn)算還是挺麻煩的饥漫。