C語言數據類型

来源:http://www.cnblogs.com/Wubg/archive/2016/08/25/5808635.html
-Advertisement-
Play Games

C數據類型 基本類型 數值類型 整型 短整型short 整型int 長整形long 浮點型 單精度型float 雙精度型double 字元類型char 構造類型 數組 結構體struct 共用體union 枚舉類型enum 指針類型 空類型void 符號屬性 長度屬性 基本型 位長(位元組) 取值範圍 ...


C數據類型

基本類型

數值類型

整型

短整型short

整型int

長整形long

浮點型

單精度型float

雙精度型double

字元類型char

 

 

構造類型

數組

 

 

結構體struct

 

 

共用體union

 

 

枚舉類型enum

 

 

指針類型

 

 

 

空類型void

 

 

 

 

 

符號屬性

長度屬性

基本型

位長(位元組)

取值範圍

輸入符

輸出符

--

--

char

1

-2^7~2^7-1(或0..255,與體繫結構有關)

%c

%c、%d、%u

signed

--

char

1

-2^7~2^7-1

%c

%c、%d、%u

unsigned

--

char

1

0~2^8-1

%c

%c、%d、%u

--

short

[int]

2

-2^15~2^15-1

%hd %hi

 

signed

short

[int]

2

-2^15~2^15-1

%hd %hi

 

unsigned

short

[int]

2

0~2^16-1

%hu %ho %hx

 

--

--

int

2/4

-2^31~2^31-1

%d %i

 

signed

--

int

2/4

-2^31~2^31-1

%d %i

 

unsigned

--

int

2/4

0~2^32-1

%u %o %x

 

--

long

[int]

4/8

-2^31~2^31-1

%ld %li

 

signed

long

[int]

4/8

-2^31~2^31-1

%ld %li

 

unsigned

long

[int]

4/8

0~2^32-1

%lu %lo %lx

 

--

long long

[int]

8

-2^63~2^63-1

%I64d %lld %Ili

 

signed

long long

[int]

8

-2^63~2^63-1

%I64d %lld %Ili

 

unsigned

long long

[int]

8

0~2^64-1

%I64u %I64o %I64x

 

--

--

float

4

+/-3.40282e+038

%f %e %g

 

--

--

double

8

+/-1.79769e+308

%lf %le %lg

%f、%e、%g

--

long

double

8或以上

+/-1.79769e+308

%Lf %Le %Lg

 

 

註意:

1、 表中的每一行,代表一種基本類型。“[]”代表可省略。

2、 char、signed char、unsigned char是三種互不相同的類型;int、short、long也是三種互不相同的類型。

3、 將char/signed char轉換為int時,會對最高符號位1進行擴展,從而造成運算問題。所以,如果要處理的數據中存在位元組值大於127的情況,使用unsigned char較為妥當。程式中若涉及位運算,也應該使用unsigned型變數。

4、 int的長度,是16位還是32位,與編譯器字長有關。

5、 整型數據可以使用%d(有符號10進位)、%o(無符號8進位)或%x/%X(無符號16進位)方式輸入輸出。而格式符%u,表示unsigned,即無符號10進位方式。

6、 整型首碼h表示short,l表示long。輸入輸出short/unsigned short時,不建議直接使用int的格式符%d/%u等,要加首碼h。(使用相匹配的格式對數據類型進行輸入輸出)

7、 關於long long類型的輸入輸出:"%lld"和"%llu"是linux下gcc/g++用於long long int類型(64 bits)輸入輸出的格式符。而"%I64d"和"%I64u"則是Microsoft VC++庫里用於輸入輸出__int64類型的格式說明。

8、 浮點型數據輸入時可使用%f、%e/%E或%g/%G,scanf函數會根據輸入數據形式,自動處理。輸出時可使用%f(普通方式)、%e/%E(指數方式)或%g/%G(自動選擇)。

9、 浮點參數壓棧的規則:float(4位元組)類型擴展成double(8位元組)入棧。在輸入時,需要區分float(%f)與double(%lf);在輸出時,用%f即可。printf函數將按照double型的規則對壓入堆棧的float(已擴展成double)和double型數據進行輸出。如果在輸出時指定%lf格式符,gcc/mingw32編譯器將給出一個警告。

10、 首碼L表示long(double)。雖然long double比double長4個位元組,但是表示的數值範圍卻是一樣的。long double類型的長度、精度及表示範圍與所使用的編譯器、操作系統等有關。

 

64位整數全解

64位整形引起的混亂主要在兩方面:一是數據類型的聲明,二是輸入輸出。

首先是如果我們在自己機器上寫程式的話,情況分類如下:

 

(1) 在win下的VC6.0裡面,聲明數據類型的時候應該寫作

  __int64 a;

  輸入輸出的時候用%I64d

  scanf(”%I64d”,&a);

  printf(”%I64d”,a);

 

(2) 在linux下的gcc/g++裡面,數據類型聲明寫作

    long long a;

    輸入輸出時候用%lld

 

(3) 在win下的其它IDE裡面[包括高版本Visual Studio],數據類型聲明用上面兩種均可。

     輸入輸出用 %I64d

 

數據類型轉換

數據類型轉換就是將數據(變數、表達式的結果)從一種類型轉換到另一種類型。

強制類型轉換:由程式員顯式進行的轉換。

自動類型轉換:編譯器根據混合運算中不同數據類型隱式地進行數據類型轉換。

 

類型自動轉換的規則:

 

註:

1、 char型和short型參與運算時,必須先轉換成int型。

2、 在賦值運算中,賦值號兩邊的數據類型不同時,需要把右邊表達式的類型將轉換為左邊變數的類型。如果右邊表達式的數據類型長度比左邊長時,將丟失一部分數據,這樣會降低精度。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在WPF中使用依賴註入的方式創建視圖 0x00 問題的產生 互聯網時代桌面開發真是越來越少了,很多應用都轉到了瀏覽器端和移動智能終端,相應的軟體開發上的新技術應用到桌面開發的文章也很少。我之前主要做WPF,今年開始學習Web應用開發,於是就接觸到了.NET Core,其中的很多概念很值得在桌面開發中 ...
  • 昨天抽空寫了一個wcf的創建和宿主程式的創建文章,下麵也有很多園友給了評論,在此謝謝大家給了我繼續記錄我的摸爬滾打之路信心……抱拳! 上次的文章《我的WCF摸爬滾打之路(1)》中寫到,在測試wcf例子的時候遇到很多稀奇古怪的異常,準備列個專題寫的。無奈學習不深,實在不敢潦草為之。今天就隨便說說吧!說 ...
  • 本文介紹壓縮庫SharpZipLib的使用,提供封裝類的源代碼,以及測試UI的源代碼。 ...
  • 轉至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0、下載 http://files.cnblogs.com/files/fonour/ajaxfileupload.js 1、引用ajaxfileupload.js 2、頁面添加類型為fil ...
  • 對於c++11來說移動語義是一個重要的概念,一直以來我對這個概念都似懂非懂。最近翻翻資料感覺突然開竅,因此記下。其實搞懂之後就會發現這個概念很簡單,並無什麼高深的地方。 先說說右值引用。右值一般指的是表示式中的臨時變數,在c++中臨時變數在表達式結束後就被銷毀了,之後程式就無法再引用這個變數了。但是 ...
  • 今天做了一下哲學家就餐問題。 附件 ...
  • 最近因為工作比較忙也沒有更新隨筆。昨天下班因為身體不舒服,代碼也沒有碼多少。說碼代碼也還算不上,畢竟是自己無聊寫點小腳本自娛自樂。 今天這篇主要的知識點是使用Python的BeautifulSoup進行多層的遍歷。 筆者閑來無事寫了個小爬蟲,主要是爬取京東商品分類以及對應的連接 如圖所示。只是一個簡 ...
  • 轉義字元 意義 ASCII碼值(十進位) \a 響鈴(BEL) 007 \b 退格(BS) ,將當前位置移到前一列 008 \f 換頁(FF),將當前位置移到下頁開頭 012 \n 換行(LF) ,將當前位置移到下一行開頭 010 \r 回車(CR) ,將當前位置移到本行開頭 013 \t 水平製表 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...