C++ 中的INT_MAX,INT_MIN數(shù)值大小操作
int占4字節(jié)32位,根據(jù)二進(jìn)制編碼的規(guī)則,
INT_MAX = 2^31-1=2147483647
INT_MIN= -2^31=-2147483648
C/C++中,所有超過該限值的數(shù),都會出現(xiàn)溢出,出現(xiàn)warning,但是并不會出現(xiàn)error。
如果想表示的整數(shù)超過了該限值,可以使用長整型long long 占8字節(jié)64位。
補(bǔ)充:C++ 數(shù)值最大最小標(biāo)識符一網(wǎng)打盡,INT_MIN/ INT_MAX/LONG_MIN/LONG_MAX 等等
我就廢話不多說了,大家還是直接看代碼吧~
| Constant | Meaning | Value |
|---|---|---|
| CHAR_BIT | Number of bits in the smallest variable that is not a bit field. | 8 |
| SCHAR_MIN | Minimum value for a variable of type signed char. | -128 |
| SCHAR_MAX | Maximum value for a variable of type signed char. | 127 |
| UCHAR_MAX | Maximum value for a variable of type unsigned char. | 255 (0xff) |
| CHAR_MIN | Minimum value for a variable of type char. | -128; 0 if /J option used |
| CHAR_MAX | Maximum value for a variable of type char. | 127; 255 if /J option used |
| MB_LEN_MAX | Maximum number of bytes in a multicharacter constant. | 5 |
| SHRT_MIN | Minimum value for a variable of type short. | -32768 |
| SHRT_MAX | Maximum value for a variable of type short. | 32767 |
| USHRT_MAX | Maximum value for a variable of type unsigned short. | 65535 (0xffff) |
| INT_MIN | Minimum value for a variable of type int. | -2147483647 - 1 |
| INT_MAX | Maximum value for a variable of type int. | 2147483647 |
| UINT_MAX | Maximum value for a variable of type unsigned int. | 4294967295 (0xffffffff) |
| LONG_MIN | Minimum value for a variable of type long. | -2147483647 - 1 |
| LONG_MAX | Maximum value for a variable of type long. | 2147483647 |
| ULONG_MAX | Maximum value for a variable of type unsigned long. | 4294967295 (0xffffffff) |
| LLONG_MIN | Minimum value for a variable of type long long. | -9,223,372,036,854,775,807 - 1 |
| LLONG_MAX | Maximum value for a variable of type long long. | 9,223,372,036,854,775,807 |
| ULLONG_MAX | Maximum value for a variable of type unsigned long long. | 18,446,744,073,709,551,615 (0xffffffffffffffff) |
補(bǔ)充:c++中short的最小值SHRT_MIN減1不是SHRT_MAX的原因
最近在看一本一直都想看的書,c++ primer plus,本來想看的是c++ primer,結(jié)果買錯(cuò)了,反正都差不多。
在學(xué)習(xí)short,int,long的時(shí)候,看到書中這樣寫到:整型變量的行為就像里程表。如果超越了限制,其值將為范圍另一端的取值。這句話我是這樣理解的,假如我們設(shè)置了一個(gè)int型的整數(shù),例如 int n_int = INT_MAX; 那么,我們做 n_int+1時(shí)輸出應(yīng)為 INT_MIN。結(jié)果的確是這樣。但是short的有點(diǎn)特別,雖然不常見。
下面看一段程序:
int c_char = CHAR_BIT; int n_int = INT_MIN; short n_short = SHRT_MIN; long n_long = LONG_MAX; long long n_llong = LLONG_MAX; cout<< sizeof n_int<<" "<<sizeof n_short<<" "<<sizeof(n_short - 1)<<" "<<sizeof(n_long)<<" "<<sizeof(n_llong)<<endl; cout<<n_int - 1<<" "<< n_short - 1 <<" "<<n_long<<" "<<n_llong<<" "<<c_char<<endl; //n_short是short類型的最小值,理論上減1應(yīng)為SHRT_MAX的值,但結(jié)果不是
下面是程序結(jié)果:

解釋:
程序中定義了n_int為int型的最小值,我們輸出n_int-1時(shí)發(fā)現(xiàn)結(jié)果是int的最大值INT_MAX。結(jié)果第二行第一個(gè)數(shù)。但是在程序的第四行我們定義了一個(gè)n_short,賦值SHRT_MIN,然后輸出n_short - 1,理論上說結(jié)果應(yīng)該為32767,也就是SHRT_MAX。但是結(jié)果不一樣,那么結(jié)果為什么會這樣呢?
我們可以看輸出中的第一行,此行輸出的是各個(gè)數(shù)值在計(jì)算機(jī)中占的字節(jié)數(shù)。在輸出sizeof(n_short - 1)時(shí),結(jié)果是4,也就是數(shù)n_short - 1現(xiàn)在是一個(gè)整型數(shù)。在c++中規(guī)定short是兩個(gè)字節(jié),也就是16位。但是在計(jì)算機(jī)中,short存儲占4個(gè)字節(jié),因此,在short超出范圍的時(shí)候會自動轉(zhuǎn)換成整型的數(shù)。
這里額外在說一點(diǎn),c++中基本整型有5種:char、short、int、long、long long(c++11中)。這里注意,char是基本整型。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Qt中網(wǎng)絡(luò)編程的實(shí)現(xiàn)
本文主要介紹了Qt中網(wǎng)絡(luò)編程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
Qt編寫地圖實(shí)現(xiàn)海量點(diǎn)位標(biāo)注
海量點(diǎn)位標(biāo)注的出現(xiàn),是為了解決普通設(shè)備點(diǎn)超過幾百個(gè)性能極速降低的問題。本文將介紹如何通過Qt實(shí)現(xiàn)海量點(diǎn)位標(biāo)注功能,感興趣的可以了解一下2022-01-01
C++ Eigen庫實(shí)現(xiàn)最小二乘擬合的示例代碼
Eigen 是一個(gè)線性算術(shù)的 C++ 模板庫,功能強(qiáng)大、快速、優(yōu)雅以及支持多平臺,本文主要為大家介紹了C++利用Eigen庫實(shí)現(xiàn)最小二乘擬合的示例代碼,希望對大家有所幫助2023-07-07
C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例
這篇文章主要介紹了C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例,步驟講解的很詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨小編一起來研究吧2020-12-12
C++編寫DLL動態(tài)鏈接庫的步驟與實(shí)現(xiàn)方法
這篇文章主要介紹了C++編寫DLL動態(tài)鏈接庫的步驟與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了C++導(dǎo)出類文件及生成與調(diào)用DLL動態(tài)連接庫的相關(guān)操作技巧,需要的朋友可以參考下2016-08-08

