java和c/c++ 數(shù)據(jù)類型長(zhǎng)度的比較
1. c語言中的整數(shù)類型有char, short, int, long等幾種, 下面是C語言對(duì)每種數(shù)據(jù)類型長(zhǎng)度的規(guī)定:
(a). short和long類型的長(zhǎng)度不相同
(b). int類型通常同具體機(jī)器的物理字長(zhǎng)相同
(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é)對(duì)其而填充的那些字節(jié)。
以前寫程序也隱隱約約的懂得這些規(guī)則,但是一直以為char類型必須是8bits的,但是最近做了一個(gè)嵌入式DSP項(xiàng)目,編譯器手冊(cè)上明明寫著char類型就是16bits的,無奈翻出"The C Programming Language"一查才發(fā)現(xiàn)ANSI C對(duì)于char類型的長(zhǎng)度并沒有作硬性規(guī)定。以前寫程序不太注意數(shù)據(jù)類型的可移植性, 這次項(xiàng)目中用到的以前的代碼都要重新檢查數(shù)據(jù)類型長(zhǎng)度的問題。
C++數(shù)據(jù)類型長(zhǎng)度問題:
一、字節(jié)和字長(zhǎng)
字節(jié),八位就是一個(gè)字節(jié),是固定概念。字長(zhǎng)是指計(jì)算機(jī)一次能處理的二進(jìn)制數(shù)據(jù)的長(zhǎng)度,是一個(gè)非固定的概念。例如,8位計(jì)算機(jī)的字長(zhǎng)為8,即一個(gè)字節(jié), 32位計(jì)算機(jī)的字長(zhǎng)位32,即4個(gè)字節(jié),同理,64位計(jì)算機(jī)的字長(zhǎng)為64,即8字節(jié)。
二、C++中的數(shù)據(jù)類型
1、字符型數(shù)據(jù)char,該類型始終是一個(gè)字節(jié)長(zhǎng),即8位。
2、整形int、短整型short和長(zhǎng)整形long。通常int為一個(gè)字長(zhǎng),short為半個(gè)字長(zhǎng),long為一個(gè)或2個(gè)字長(zhǎng)(在32位機(jī)器中為一個(gè)字長(zhǎng))。
3、浮點(diǎn)型float、雙精度double、和長(zhǎng)雙精度long double,分別表示單精度浮點(diǎn)數(shù) 雙精度浮點(diǎn)數(shù)和擴(kuò)展精度的浮點(diǎn)數(shù)值。典型情況下,float 為一個(gè)字,double是兩個(gè)字,long double為三個(gè)或四個(gè)字。
Java中各數(shù)據(jù)類型的長(zhǎng)度:
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)文章
淺談SpringCloud實(shí)現(xiàn)簡(jiǎn)單的微服務(wù)架構(gòu)
Spring Cloud是一系列框架的有序集合,本文就使用SpringCloud實(shí)現(xiàn)一套簡(jiǎn)單的微服務(wù)架構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Mybatis多參數(shù)及實(shí)體對(duì)象傳遞實(shí)例講解
在使用Mybatis的時(shí)候,經(jīng)常會(huì)有各種各樣的參數(shù)傳遞,不同類型,不同個(gè)數(shù)的參數(shù),下面小編通過例子給大家講解下Mybatis多參數(shù)及實(shí)體對(duì)象傳遞,一起看看吧2016-12-12Java將時(shí)間按月份分段的實(shí)現(xiàn)思路與方法
這篇文章主要給大家介紹了關(guān)于Java將時(shí)間按月份分段的實(shí)現(xiàn)思路與方法,通過文中介紹的方法可以將時(shí)間分成我們想要的時(shí)間段,文中給出了詳細(xì)的實(shí)例代碼,需要的朋友可以參考下2021-07-07SpringBoot創(chuàng)建并簡(jiǎn)單使用的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot創(chuàng)建并簡(jiǎn)單使用的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10