C語言入門教程-(3)基本數據類型

来源:https://www.cnblogs.com/cxyjczs/archive/2018/12/19/10145843.html
-Advertisement-
Play Games

本節內容主要介紹了C語言程式的基本數據類型。介紹了基本類型的整數類型和浮點類型,以及簡單的講解了void類型。整數類型又包括int型、char型、bool型,浮點類型又包括單精度浮點數(float)和雙精度浮點數(double)。 ...


1.數據類型

在C語言中,數據類型指的是用於聲明不同類型的變數或函數的一個廣泛的系統。C語言數據類型可以分為四種:

  • 1.基本類型:
    它們是算術類型,包括兩種類型:整數類型和浮點類型。

  • 2.枚舉類型:
    它們也是算術類型,被用來定義在程式中只能賦予其一定的離散整數值的變數。

  • 3.void 類型:
    類型說明符 void 表明沒有可用的值。

  • 4.派生類型:
    它們包括:指針類型、數組類型、結構類型、共用體類型和函數類型。

本節內容主要學習的是基本類型,以及簡單的介紹一下void類型。其他的類型在後續的章節中,將會慢慢的接觸到,不用太擔心。

2.整數類型

2.1 int型

int類型,就是沒有小數的部分,比如2、500、0、-100。
用法如下:

int timoHp = 586;//timo的血量是586;

2.2 char型

char類型用於存放一個字元,值用兩個單引號''來表示 (雙引號表示字元串)。編程語言通過使用字母的數值編碼來解決字母的存儲,因此char類型是另一種整型。字元集的字元用數值編碼(ASCII碼)表示。例如,字元'A'的編碼是65,字元'B'的編碼是66。
用法如下:

//char 只能存放一個字元,超過一個字元就會產生編譯錯誤
char c = 'a'; 
char c1 = '蓋';
char c2 = '倫'; 

2.3 bool型

在計算中,bool變數的值可以是true或false。我們經常將非零值解釋為true,將零解釋為false。舉一個簡單的例子,我們可以這樣編寫語句:

bool timoLive = true;

字面值true和false都可以通過提升類型轉換為int類型,true被轉換為1,而false被轉換為0:

int timoLive = true;//stick的值是1
int timoKill = false;//egg的值是0

另外,任何非零值都可以轉換為true,而非零被轉換為false:

bool timoHp = 586;//timoHp的值是true
bool timoSpeed = -10;//timoSpeed的值是true
bool timoAttack = 0;//timoAttack的值是false

3.浮點類型

浮點數能夠表示帶小數部分的數字,它們的表示範圍也更大。浮點數在電腦中的存儲分兩部分,一部分表示值,另一部分用於對值進行放大或縮小。舉個簡單的例子來幫助大家理解電腦中的浮點數,比如說過情人節了,我們給女朋友發個紅包表示一下心意。我們需要表示的數額分別是13.14和1314,它們除了小數點的位置不同外,其他都是相同的(幫你們找了一個極好的藉口)。至少電腦是這樣看的,至於女朋友怎麼看~~~在電腦中,第一個數可以表示為0.1314(基準數)和100(縮放因數),第二個數可以表示為0.1314(基準數)和10000(縮放因數)。縮放因數的作用就是移動小數點的位置,這其實也是浮點數術語的來源。電腦中的實際表示其實不是這樣的十進位,而是基於二進位,這裡我們簡單的明白這個原理就行了。

3.1 書寫浮點數

浮點數的書寫方法有兩種,一種是我們使用的標準小數點表示法:
3.14
5.0
0.52
第二種是E表示法:
3.14E+2
1.26e-4
5E6
-20.18E10
3.14E+2
上面的數字就是E表示法,比如說3.14E+3,這裡的意思是3.14的小數點向右移動3位。其中前面的符號位可以是正號(+)或者負號(-),小數點也是可選的,可以使用E或者e,後面的符號可以是+、-或者省略,後面的數字代表移動的位數。

3.2 單精度浮點數(float)和雙精度浮點數(double)

浮點數根據範圍和精度不同分為兩種:單精度浮點數(float)和雙精度浮點數(double)。一般來說,處理單精度浮點數的速度比處理雙精度浮點數快。

  • 單精度浮點數一般占4個位元組,32位。單精度浮點數1位符號位,8位指數,23位小數。float的小數位只有23位,能表示的最大十進位數為2的23次方,即8 388 608,相當於十進位的7位,嚴格點說,精度只能百分百的保證十進位的6位。所以我們一般說有效數字是8位。單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38。

  • 雙精度浮點數一般占8個位元組,64位。雙精度浮點數1位符號位,11位指數,52位小數。小數位能表示的最大十進位數為2的52次方,即4 503 599 627 370 496。這是一個16位數,所以精度能百分百的保證十進位的15位。所以有效數字為16位。雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308。

簡單的用法如下:

float timoArmor = 150.7; //timo的護甲是150.7,查看VS中armor實際的值可以看到是150.699997
double timoAttackSpeed = 0.865;/*timo的攻擊速度是0.865,查看VS中attackSpeed實際的值可以看到是0.86499999999999999*/

與整數相比,浮點數有兩大優點。第一個是浮點數可以表示整數之間的值,可以表示小數。第二個是浮點數的表示範圍比整數大的多。浮點數也有兩個缺點,一個是浮點數運算的速度通常比整數慢,而且精度將降低。下麵通過一個簡單的程式來說明:

float a = 3.14E+22;
float b = a + 1.0;

該程式定義一個float類型a,然後b是a+1,試問運行程式b-a是多少?我們認為結果應該為1,但是在我們程式運行結果中,b-a將會是0。產生這個問題的原因就是3.14E+22是一個小數點左邊有23位的數字,加上1,就是在第23位加1,但是float類型只能表示8位數字有效,因此對這個值不會有任何影響。

4.void類型

void的意思是“無類型”,表示函數沒有返回值以及對函數參數做限定。這裡如果不理解的話,可以先看看就好了,以後講到函數就懂了。如果不用void,比如用int或者別的,則函數需要有返回值。void就是不需要結果,否則如int、char等,就必需返回一個與其對應的數據才能編譯通過。void不能用來定義變數,讓我們試著來定義:

void a;

這個語句編譯時會出錯。不過,即使編譯不會出錯,它也沒有任何實際意義。

5.總結

總結一下,本節內容主要介紹了C語言程式的基本數據類型。介紹了基本類型的整數類型和浮點類型,以及簡單的講解了void類型。整數類型又包括int型、char型、bool型,浮點類型又包括單精度浮點數(float)和雙精度浮點數(double)。

6.練習

3-1 下麵的程式,第一處i的值是什麼?第二處i的值是什麼?

char ch = 'A';
int i = ch;//第一處i

ch = ch + 1;
i = ch;//第二處i

3-2 編寫一個程式,對蓋倫的屬性值,找到合適的類型來定義。
名字:簡稱為G
生命值:455
移動速度:340
攻擊速度:0.625
攻擊範圍:125
生命回覆:8.25
攻擊力:59.5

可以在評論中,寫下你們的練習答案。

之後的文章會給大家帶來更精彩的內容
歡迎關註我的知乎專欄:程式員基礎知識
獲取練習答案以及更多實戰項目
歡迎關註我的公眾號:程式員基礎知識
交(gao)流(ji)群:493584686

 


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

-Advertisement-
Play Games
更多相關文章
  • 函數: 將特定功能代碼編寫在一個函數里 便於閱讀和復用 對一組表達特定功能表達式的封裝 使程式模塊化 python內置函數: input(),print(),eval()... 函數定義 函數語法格式: def <函數名>(<參數列表>): <函數體> return <返回值列表> 函數調用過程: ...
  • 重載運算符 ==和!=的重載 問題:假如有一個類似於vector的類,這個類只能存放string,當有2個這個類的對象時,如何比較這2個對象。 自己重載==和!= 代碼(重載==,!=) c++ include include include class string_vector{ friend ...
  • 初次翻譯,部分內容並非按字面翻譯,是按本人理解進行了內容重組。如有錯誤望指正。 Dart是完全的面向對象的語言,甚至函數也是一個Function類型的對象。這意味著函數可以賦值給變數或者作為函數的參數。你可以直接用變數名(其實現了Function類)作為函數名直接調用。 參考如下示例代碼: 下麵是一 ...
  • 類與類之間的關係 在我們的世界中事物和事物之間總會有一些聯繫. 在面向對象中. 類和類之間也可以產生相關的關係 1. 依賴關係 執行某個動作的時候. 需要xxx來幫助你完成這個操作. 此時的關係是最輕的. 隨時可以更換另外一個東西來完成此操作 2. 關聯關係 在對象裡面埋對象 self.girlFr ...
  • 類與類之間的關係 在我們的世界中事物和事物之間總會有一些聯繫. 在面向對象中. 類和類之間也可以產生相關的關係 1. 依賴關係 執行某個動作的時候. 需要xxx來幫助你完成這個操作. 此時的關係是最輕的. 隨時可以更換另外一個東西來完成此操作 2. 關聯關係 在對象裡面埋對象 self.girlFr ...
  • 1.自動裝箱和自動拆箱 裝箱就是自動將基本數據類型轉換為包裝器類型; (1)Integer it = 200; 實際上是:Integer it3 = Integer.valueOf(100); 自動裝箱功能:把int類型自動裝載到Integer中 先裝箱,再賦值 拆箱就是 自動將包裝器類型轉換為基本 ...
  • 當項目使用分散式架構時,就會有可能出現客戶端數據重覆提交的情況 比如,當你向伺服器發起一個借貸命令時,如果手速夠快,可能會向後臺的兩個撥款伺服器發起同一個請求 此時, 如果不進行處理, 後臺可能會向用戶撥款兩次, 但是用戶只有一次的借錢記錄. 這時, 也是用到了常用sso登錄時的技術Redis, 前 ...
  • 這一節主要講解了C語言里變數在記憶體中的位置,各種變數的使用區別,以及如何在堆棧中分配空間等C語言記憶體管理問題。 自動變數與靜態變數 auto自動變數 auto是預設的關鍵字,如實際中int a,實際為auto int a,{}內部的都是auto變數,不用為此類變數申請或者釋放空間,它都是自動完成的。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...