java和c/c++ 數(shù)據(jù)類型長度的比較
1. c語言中的整數(shù)類型有char, short, int, long等幾種, 下面是C語言對每種數(shù)據(jù)類型長度的規(guī)定:
(a). short和long類型的長度不相同
(b). int類型通常同具體機(jī)器的物理字長相同
(c). short通常是16bits, int通常是16bits or 32bits每種編譯器可以根據(jù)硬件的不同自由確定, 但是short和int必須最少是16bits, 而long類型必須最少是32bits, 并且short必須比int和long類型要短。
2. sizeof() 運(yùn)算符返回的是一種數(shù)據(jù)類型中所包含的字節(jié)數(shù)(bytes), AnsiC規(guī)定sizeof(char)必須返回1,當(dāng)sizeof作用于數(shù)組時(shí), 返回的是數(shù)組中所有成員所占的字節(jié)數(shù)(注意并不是數(shù)組中成員的個(gè)數(shù)), 當(dāng)sizeof()作用于結(jié)構(gòu)體和公用體時(shí),返回的不僅僅是數(shù)據(jù)成員總的字節(jié)數(shù), 還包括編譯器為了實(shí)現(xiàn)字節(jié)對其而填充的那些字節(jié)。
以前寫程序也隱隱約約的懂得這些規(guī)則,但是一直以為char類型必須是8bits的,但是最近做了一個(gè)嵌入式DSP項(xiàng)目,編譯器手冊上明明寫著char類型就是16bits的,無奈翻出"The C Programming Language"一查才發(fā)現(xiàn)ANSI C對于char類型的長度并沒有作硬性規(guī)定。以前寫程序不太注意數(shù)據(jù)類型的可移植性, 這次項(xiàng)目中用到的以前的代碼都要重新檢查數(shù)據(jù)類型長度的問題。
C++數(shù)據(jù)類型長度問題:
一、字節(jié)和字長
字節(jié),八位就是一個(gè)字節(jié),是固定概念。字長是指計(jì)算機(jī)一次能處理的二進(jìn)制數(shù)據(jù)的長度,是一個(gè)非固定的概念。例如,8位計(jì)算機(jī)的字長為8,即一個(gè)字節(jié), 32位計(jì)算機(jī)的字長位32,即4個(gè)字節(jié),同理,64位計(jì)算機(jī)的字長為64,即8字節(jié)。
二、C++中的數(shù)據(jù)類型
1、字符型數(shù)據(jù)char,該類型始終是一個(gè)字節(jié)長,即8位。
2、整形int、短整型short和長整形long。通常int為一個(gè)字長,short為半個(gè)字長,long為一個(gè)或2個(gè)字長(在32位機(jī)器中為一個(gè)字長)。
3、浮點(diǎn)型float、雙精度double、和長雙精度long double,分別表示單精度浮點(diǎn)數(shù) 雙精度浮點(diǎn)數(shù)和擴(kuò)展精度的浮點(diǎn)數(shù)值。典型情況下,float 為一個(gè)字,double是兩個(gè)字,long double為三個(gè)或四個(gè)字。
Java中各數(shù)據(jù)類型的長度:
boolean 這個(gè)試編譯環(huán)境而定
byte 1個(gè)字節(jié)
short 2個(gè)字節(jié)
char 2個(gè)字節(jié)
int 4個(gè)字節(jié)
long 8個(gè)字節(jié)
float 4個(gè)字節(jié)
double 8個(gè)字節(jié)
相關(guān)文章
詳解大數(shù)據(jù)處理引擎Flink內(nèi)存管理
Flink是jvm之上的大數(shù)據(jù)處理引擎,jvm存在java對象存儲(chǔ)密度低、full gc時(shí)消耗性能,gc存在stw的問題,同時(shí)omm時(shí)會(huì)影響穩(wěn)定性。針對頻繁序列化和反序列化問題flink使用堆內(nèi)堆外內(nèi)存可以直接在一些場景下操作二進(jìn)制數(shù)據(jù),減少序列化反序列化消耗。本文帶你詳細(xì)理解其原理。2021-05-05
java中hashmap容量的初始化實(shí)現(xiàn)
這篇文章主要介紹了java中hashmap容量的初始化實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
java線程并發(fā)cyclicbarrier類使用示例
CyclicBarrier類似于CountDownLatch也是個(gè)計(jì)數(shù)器,不同的是CyclicBarrier數(shù)的是調(diào)用了CyclicBarrier.await()進(jìn)入等待的線程數(shù),當(dāng)線程數(shù)達(dá)到了CyclicBarrier初始時(shí)規(guī)定的數(shù)目時(shí),所有進(jìn)入等待狀態(tài)的線程被喚醒并繼續(xù),下面使用示例學(xué)習(xí)他的使用方法2014-01-01
SpringSecurity HttpSecurity 類處理流程分析
SpringSecurity在SSM項(xiàng)目中使用基于配置文件,通過XML標(biāo)簽定義認(rèn)證信息,HttpSecurity在SpringBoot中通過代碼配置實(shí)現(xiàn)與XML相同功能,詳細(xì)介紹了HttpSecurity的類結(jié)構(gòu)、處理過程及其與SecurityBuilder的關(guān)系,感興趣的朋友一起看看吧2024-09-09
SpringBoot實(shí)現(xiàn)OneDrive文件上傳的詳細(xì)步驟
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)OneDrive文件上傳的詳細(xì)步驟,文中通過代碼示例和圖文講解的非常詳細(xì),對大家實(shí)現(xiàn)OneDrive文件上傳有一定的幫助,需要的朋友可以參考下2024-02-02
java中volatile和synchronized的區(qū)別與聯(lián)系
這篇文章主要介紹了java中volatile和synchronized的區(qū)別與聯(lián)系的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下2017-10-10
詳解springboot+aop+Lua分布式限流的最佳實(shí)踐
這篇文章主要介紹了詳解springboot+aop+Lua分布式限流的最佳實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Java實(shí)現(xiàn)郵件發(fā)送的過程及代碼詳解
這篇文章主要介紹了Java實(shí)現(xiàn)郵件發(fā)送的過程及代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

