日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

stdint.h 文件

發(fā)布時(shí)間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stdint.h 文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

<stdint.h> 定義了 int16_t 、 uint32_t 、 int64_t 等整型,在需要確定大小的整型時(shí)可以使用它們代替 short 、 unsigned long long 等,在 C 整型中,只使用 int 。適當(dāng)情況下,推 薦使用標(biāo)準(zhǔn)類型如 size_t 和 ptrdiff_t 。


最常使用的是,對(duì)整數(shù)來(lái)說(shuō),通常不會(huì)用到太大,如循環(huán)計(jì)數(shù)等,可以使用普通的 int 。 你可以認(rèn)為 int 至少為 32 位,但不要認(rèn)為它會(huì)多于 32 位,需要 64 位整型的話,可以使用int64_t 或 uint64_t 。對(duì)于大整數(shù),使用 int64_t 。


不要使用 uint32_t 等無(wú)符號(hào)整型,除非你是在表示一個(gè) 位組( bit pattern ) 而不是一個(gè) 數(shù)值。即使數(shù)值不會(huì)為負(fù)值也不要使用無(wú)符號(hào)類型,使用斷言來(lái)保護(hù)數(shù)據(jù)。


有些人,包括一些教科書作者,推薦使用無(wú)符號(hào)類型表示非負(fù)數(shù),類型表明了數(shù)值取值形 式 。但是,在 C 語(yǔ)言中,這一優(yōu)點(diǎn)被由其導(dǎo)致的 bugs 所淹沒(méi)。看看:

for (unsigned int i = foo.Length()-1; i >= 0; --i)?
上述代碼永遠(yuǎn)不會(huì)終止!有時(shí) gcc 會(huì)發(fā)現(xiàn)該 bug 并報(bào)警,但通常不會(huì)。類似的 bug 還會(huì) 出現(xiàn)在比較有符合變量和無(wú)符號(hào)變量時(shí),主要是 C 的 類型提升機(jī)制( type-promotion
scheme , C 語(yǔ)言中各種內(nèi)建類型之間的提升轉(zhuǎn)換關(guān)系) 會(huì)致使無(wú)符號(hào)類型的行為出乎你 的意料。因此,使用斷言聲明變量為非負(fù)數(shù),不要使用無(wú)符號(hào)型。


以下內(nèi)容轉(zhuǎn)載自http://apps.hi.baidu.com/share/detail/32935657

[cpp] view plaincopy print?
  • 按照posix標(biāo)準(zhǔn),一般整型對(duì)應(yīng)的*_t類型為:??
  • 1字節(jié)?????uint8_t??
  • 2字節(jié)?????uint16_t??
  • 4字節(jié)?????uint32_t??
  • 8字節(jié)?????uint64_t??
  • 按照posix標(biāo)準(zhǔn),一般整型對(duì)應(yīng)的*_t類型為: 1字節(jié) uint8_t 2字節(jié) uint16_t 4字節(jié) uint32_t 8字節(jié) uint64_t

    stdint.h文件如下:

    [cpp] view plaincopy print?
  • /*?Copyright?(C)?1997,?1998,?1999,?2000,?2001?Free?Software?Foundation,?Inc.?
  • This?file?is?part?of?the?GNU?C?Library.?
  • ?
  • The?GNU?C?Library?is?free?software;?you?can?redistribute?it?and/or?
  • modify?it?under?the?terms?of?the?GNU?Lesser?General?Public?
  • License?as?published?by?the?Free?Software?Foundation;?either?
  • version?2.1?of?the?License,?or?(at?your?option)?any?later?version.?
  • ?
  • The?GNU?C?Library?is?distributed?in?the?hope?that?it?will?be?useful,?
  • but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of?
  • MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.?See?the?GNU?
  • Lesser?General?Public?License?for?more?details.?
  • ?
  • You?should?have?received?a?copy?of?the?GNU?Lesser?General?Public?
  • License?along?with?the?GNU?C?Library;?if?not,?write?to?the?Free?
  • Software?Foundation,?Inc.,?59?Temple?Place,?Suite?330,?Boston,?MA?
  • 02111-1307?USA.?*/??
  • ??
  • /*?
  • *?ISO?C99:?7.18?Integer?types?<stdint.h>?
  • */??
  • ??
  • #ifndef?_STDINT_H??
  • #define?_STDINT_H???1??
  • ??
  • #include?<features.h>??
  • #include?<bits/wchar.h>??
  • #include?<bits/wordsize.h>??
  • ??
  • /*?Exact?integral?types.?*/??
  • ??
  • /*?Signed.?*/??
  • ??
  • /*?There?is?some?amount?of?overlap?with?<sys/types.h>?as?known?by?inet?code?*/??
  • #ifndef?__int8_t_defined??
  • #?define?__int8_t_defined??
  • typedef?signed?char?????int8_t;??
  • typedef?short?int???????int16_t;??
  • typedef?int?????????int32_t;??
  • #?if?__WORDSIZE?==?64??
  • typedef?long?int????????int64_t;??
  • #?else??
  • __extension__??
  • typedef?long?long?int???????int64_t;??
  • #?endif??
  • #endif??
  • ??
  • /*?Unsigned.?*/??
  • typedef?unsigned?char???????uint8_t;??
  • typedef?unsigned?short?int?uint16_t;??
  • #ifndef?__uint32_t_defined??
  • typedef?unsigned?int????????uint32_t;??
  • #?define?__uint32_t_defined??
  • #endif??
  • #if?__WORDSIZE?==?64??
  • typedef?unsigned?long?int???uint64_t;??
  • #else??
  • __extension__??
  • typedef?unsigned?long?long?int?uint64_t;??
  • #endif??
  • ??
  • ??
  • /*?Small?types.?*/??
  • ??
  • /*?Signed.?*/??
  • typedef?signed?char?????int_least8_t;??
  • typedef?short?int???????int_least16_t;??
  • typedef?int?????????int_least32_t;??
  • #if?__WORDSIZE?==?64??
  • typedef?long?int????????int_least64_t;??
  • #else??
  • __extension__??
  • typedef?long?long?int???????int_least64_t;??
  • #endif??
  • ??
  • /*?Unsigned.?*/??
  • typedef?unsigned?char???????uint_least8_t;??
  • typedef?unsigned?short?int?uint_least16_t;??
  • typedef?unsigned?int????????uint_least32_t;??
  • #if?__WORDSIZE?==?64??
  • typedef?unsigned?long?int???uint_least64_t;??
  • #else??
  • __extension__??
  • typedef?unsigned?long?long?int?uint_least64_t;??
  • #endif??
  • ??
  • ??
  • /*?Fast?types.?*/??
  • ??
  • /*?Signed.?*/??
  • typedef?signed?char?????int_fast8_t;??
  • #if?__WORDSIZE?==?64??
  • typedef?long?int????????int_fast16_t;??
  • typedef?long?int????????int_fast32_t;??
  • typedef?long?int????????int_fast64_t;??
  • #else??
  • typedef?int?????????int_fast16_t;??
  • typedef?int?????????int_fast32_t;??
  • __extension__??
  • typedef?long?long?int???????int_fast64_t;??
  • #endif??
  • ??
  • /*?Unsigned.?*/??
  • typedef?unsigned?char???????uint_fast8_t;??
  • #if?__WORDSIZE?==?64??
  • typedef?unsigned?long?int???uint_fast16_t;??
  • typedef?unsigned?long?int???uint_fast32_t;??
  • typedef?unsigned?long?int???uint_fast64_t;??
  • #else??
  • typedef?unsigned?int????????uint_fast16_t;??
  • typedef?unsigned?int????????uint_fast32_t;??
  • __extension__??
  • typedef?unsigned?long?long?int?uint_fast64_t;??
  • #endif??
  • ??
  • ??
  • /*?Types?for?`void?*'?pointers.?*/??
  • #if?__WORDSIZE?==?64??
  • #?ifndef?__intptr_t_defined??
  • typedef?long?int????????intptr_t;??
  • #?define?__intptr_t_defined??
  • #?endif??
  • typedef?unsigned?long?int???uintptr_t;??
  • #else??
  • #?ifndef?__intptr_t_defined??
  • typedef?int?????????intptr_t;??
  • #?define?__intptr_t_defined??
  • #?endif??
  • typedef?unsigned?int????????uintptr_t;??
  • #endif??
  • ??
  • ??
  • /*?Largest?integral?types.?*/??
  • #if?__WORDSIZE?==?64??
  • typedef?long?int????????intmax_t;??
  • typedef?unsigned?long?int???uintmax_t;??
  • #else??
  • __extension__??
  • typedef?long?long?int???????intmax_t;??
  • __extension__??
  • typedef?unsigned?long?long?int?uintmax_t;??
  • #endif??
  • ??
  • ??
  • /*?The?ISO?C99?standard?specifies?that?in?C++?implementations?these?
  • macros?should?only?be?defined?if?explicitly?requested.?*/??
  • #if?!defined?__cplusplus?||?defined?__STDC_LIMIT_MACROS??
  • ??
  • #?if?__WORDSIZE?==?64??
  • #?define?__INT64_C(c)?c?##?L??
  • #?define?__UINT64_C(c)?c?##?UL??
  • #?else??
  • #?define?__INT64_C(c)?c?##?LL??
  • #?define?__UINT64_C(c)?c?##?ULL??
  • #?endif??
  • ??
  • /*?Limits?of?integral?types.?*/??
  • ??
  • /*?Minimum?of?signed?integral?types.?*/??
  • #?define?INT8_MIN???????(-128)??
  • #?define?INT16_MIN??????(-32767-1)??
  • #?define?INT32_MIN??????(-2147483647-1)??
  • #?define?INT64_MIN??????(-__INT64_C(9223372036854775807)-1)??
  • /*?Maximum?of?signed?integral?types.?*/??
  • #?define?INT8_MAX???????(127)??
  • #?define?INT16_MAX??????(32767)??
  • #?define?INT32_MAX??????(2147483647)??
  • #?define?INT64_MAX??????(__INT64_C(9223372036854775807))??
  • ??
  • /*?Maximum?of?unsigned?integral?types.?*/??
  • #?define?UINT8_MAX??????(255)??
  • #?define?UINT16_MAX?????(65535)??
  • #?define?UINT32_MAX?????(4294967295U)??
  • #?define?UINT64_MAX?????(__UINT64_C(18446744073709551615))??
  • ??
  • ??
  • /*?Minimum?of?signed?integral?types?having?a?minimum?size.?*/??
  • #?define?INT_LEAST8_MIN?????(-128)??
  • #?define?INT_LEAST16_MIN????(-32767-1)??
  • #?define?INT_LEAST32_MIN????(-2147483647-1)??
  • #?define?INT_LEAST64_MIN????(-__INT64_C(9223372036854775807)-1)??
  • /*?Maximum?of?signed?integral?types?having?a?minimum?size.?*/??
  • #?define?INT_LEAST8_MAX?????(127)??
  • #?define?INT_LEAST16_MAX????(32767)??
  • #?define?INT_LEAST32_MAX????(2147483647)??
  • #?define?INT_LEAST64_MAX????(__INT64_C(9223372036854775807))??
  • ??
  • /*?Maximum?of?unsigned?integral?types?having?a?minimum?size.?*/??
  • #?define?UINT_LEAST8_MAX????(255)??
  • #?define?UINT_LEAST16_MAX???(65535)??
  • #?define?UINT_LEAST32_MAX???(4294967295U)??
  • #?define?UINT_LEAST64_MAX???(__UINT64_C(18446744073709551615))??
  • ??
  • ??
  • /*?Minimum?of?fast?signed?integral?types?having?a?minimum?size.?*/??
  • #?define?INT_FAST8_MIN??????(-128)??
  • #?if?__WORDSIZE?==?64??
  • #?define?INT_FAST16_MIN????(-9223372036854775807L-1)??
  • #?define?INT_FAST32_MIN????(-9223372036854775807L-1)??
  • #?else??
  • #?define?INT_FAST16_MIN????(-2147483647-1)??
  • #?define?INT_FAST32_MIN????(-2147483647-1)??
  • #?endif??
  • #?define?INT_FAST64_MIN?????(-__INT64_C(9223372036854775807)-1)??
  • /*?Maximum?of?fast?signed?integral?types?having?a?minimum?size.?*/??
  • #?define?INT_FAST8_MAX??????(127)??
  • #?if?__WORDSIZE?==?64??
  • #?define?INT_FAST16_MAX????(9223372036854775807L)??
  • #?define?INT_FAST32_MAX????(9223372036854775807L)??
  • #?else??
  • #?define?INT_FAST16_MAX????(2147483647)??
  • #?define?INT_FAST32_MAX????(2147483647)??
  • #?endif??
  • #?define?INT_FAST64_MAX?????(__INT64_C(9223372036854775807))??
  • ??
  • /*?Maximum?of?fast?unsigned?integral?types?having?a?minimum?size.?*/??
  • #?define?UINT_FAST8_MAX?????(255)??
  • #?if?__WORDSIZE?==?64??
  • #?define?UINT_FAST16_MAX???(18446744073709551615UL)??
  • #?define?UINT_FAST32_MAX???(18446744073709551615UL)??
  • #?else??
  • #?define?UINT_FAST16_MAX???(4294967295U)??
  • #?define?UINT_FAST32_MAX???(4294967295U)??
  • #?endif??
  • #?define?UINT_FAST64_MAX????(__UINT64_C(18446744073709551615))??
  • ??
  • ??
  • /*?Values?to?test?for?integral?types?holding?`void?*'?pointer.?*/??
  • #?if?__WORDSIZE?==?64??
  • #?define?INTPTR_MIN????????(-9223372036854775807L-1)??
  • #?define?INTPTR_MAX????????(9223372036854775807L)??
  • #?define?UINTPTR_MAX???????(18446744073709551615UL)??
  • #?else??
  • #?define?INTPTR_MIN????????(-2147483647-1)??
  • #?define?INTPTR_MAX????????(2147483647)??
  • #?define?UINTPTR_MAX???????(4294967295U)??
  • #?endif??
  • ??
  • ??
  • /*?Minimum?for?largest?signed?integral?type.?*/??
  • #?define?INTMAX_MIN?????(-__INT64_C(9223372036854775807)-1)??
  • /*?Maximum?for?largest?signed?integral?type.?*/??
  • #?define?INTMAX_MAX?????(__INT64_C(9223372036854775807))??
  • ??
  • /*?Maximum?for?largest?unsigned?integral?type.?*/??
  • #?define?UINTMAX_MAX????????(__UINT64_C(18446744073709551615))??
  • ??
  • ??
  • /*?Limits?of?other?integer?types.?*/??
  • ??
  • /*?Limits?of?`ptrdiff_t'?type.?*/??
  • #?if?__WORDSIZE?==?64??
  • #?define?PTRDIFF_MIN???????(-9223372036854775807L-1)??
  • #?define?PTRDIFF_MAX???????(9223372036854775807L)??
  • #?else??
  • #?define?PTRDIFF_MIN???????(-2147483647-1)??
  • #?define?PTRDIFF_MAX???????(2147483647)??
  • #?endif??
  • ??
  • /*?Limits?of?`sig_atomic_t'.?*/??
  • #?define?SIG_ATOMIC_MIN?????(-2147483647-1)??
  • #?define?SIG_ATOMIC_MAX?????(2147483647)??
  • ??
  • /*?Limit?of?`size_t'?type.?*/??
  • #?if?__WORDSIZE?==?64??
  • #?define?SIZE_MAX??????(18446744073709551615UL)??
  • #?else??
  • #?define?SIZE_MAX??????(4294967295U)??
  • #?endif??
  • ??
  • /*?Limits?of?`wchar_t'.?*/??
  • #?ifndef?WCHAR_MIN??
  • /*?These?constants?might?also?be?defined?in?<wchar.h>.?*/??
  • #?define?WCHAR_MIN?????__WCHAR_MIN??
  • #?define?WCHAR_MAX?????__WCHAR_MAX??
  • #?endif??
  • ??
  • /*?Limits?of?`wint_t'.?*/??
  • #?define?WINT_MIN???????(0u)??
  • #?define?WINT_MAX???????(4294967295u)??
  • ??
  • #endif?/*?C++?&&?limit?macros?*/??
  • ??
  • ??
  • /*?The?ISO?C99?standard?specifies?that?in?C++?implementations?these?
  • should?only?be?defined?if?explicitly?requested.?*/??
  • #if?!defined?__cplusplus?||?defined?__STDC_CONSTANT_MACROS??
  • ??
  • /*?Signed.?*/??
  • #?define?INT8_C(c)?c??
  • #?define?INT16_C(c)?c??
  • #?define?INT32_C(c)?c??
  • #?if?__WORDSIZE?==?64??
  • #?define?INT64_C(c)????c?##?L??
  • #?else??
  • #?define?INT64_C(c)????c?##?LL??
  • #?endif??
  • ??
  • /*?Unsigned.?*/??
  • #?define?UINT8_C(c)?c?##?U??
  • #?define?UINT16_C(c)????c?##?U??
  • #?define?UINT32_C(c)????c?##?U??
  • #?if?__WORDSIZE?==?64??
  • #?define?UINT64_C(c)???c?##?UL??
  • #?else??
  • #?define?UINT64_C(c)???c?##?ULL??
  • #?endif??
  • ??
  • /*?Maximal?type.?*/??
  • #?if?__WORDSIZE?==?64??
  • #?define?INTMAX_C(c)???c?##?L??
  • #?define?UINTMAX_C(c)?c?##?UL??
  • #?else??
  • #?define?INTMAX_C(c)???c?##?LL??
  • #?define?UINTMAX_C(c)?c?##?ULL??
  • #?endif??
  • ??
  • #endif?/*?C++?&&?constant?macros?*/??
  • ??
  • #endif?/*?stdint.h?*/??
  • 總結(jié)

    以上是生活随笔為你收集整理的stdint.h 文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。