主頁 > 軟體設計 > 光天化日學C語言(03)- 變數 | 萬物皆變化,唯有初心不變

光天化日學C語言(03)- 變數 | 萬物皆變化,唯有初心不變

2021-06-15 09:21:52 軟體設計

📢博客主頁:https://blog.csdn.net/WhereIsHeroFrom
📢歡迎各位 👍點贊 ?收藏 📝評論,如有錯誤請留言指正,非常感謝!
📢本文由 英雄哪里出來 原創,轉載請注明出處,首發于 🙉 CSDN 🙉
作者的專欄:
??👉C語言基礎專欄《光天化日學C語言》
??👉演算法進階專欄《夜深人靜寫演算法》
??👉奇奇怪怪的專欄《學姐教我寫代碼》

文章目錄

  • 一、前言
  • 二、人物簡介
  • 三、變數
    • 1、變數的定義
    • 2、變數的賦值
    • 3、變數的初始化
    • 4、變數的由來
    • 5、多變數的定義
    • 6、變數間的賦值
  • 四、資料型別
    • 1、內置資料型別
    • 2、資料的大小
    • 3、整數的表示范圍
  • 五、變數名命名規則

一、前言

??本文作者是從 2007 年開始學 C語言 的,不久又接觸了C++,基本就是 C/C++ 技術堆疊寫了 14 年的樣子,不算精通,但也算差強人意,著有《夜深人靜寫演算法》系列,且承諾會持續更新,直到所有演算法都學完,主要專攻 高中 OI 、大學 ACM、 職場 LeetCode 的全領域演算法,由于文章中采用 C/C++ 的語法,于是就有不少讀者朋友反饋語言層面就被勸退了,更何況是演算法,
??于是,2021 年 06 月 12 日,《光天化日學C語言》 應運而生,并且作者在此承諾,這個系列全部文章均免費且開源,主要服務于高中生、大學生以及職場上想入坑C語言的志同道合之人,希望能給祖國引入更多編程方面的人才,并且讓自己的青春不留遺憾!
??本章的內容主要將介紹變數的定義、賦值、初始化以及一些常用的內置資料型別,

二、人物簡介

  • 第一位登場的就是今后會一直教我們C語言的老師 —— 光天,
  • 第二位登場的則是今后會和大家一起學習C語言的沒什么資質的小白程式猿 —— 化日,
    在這里插入圖片描述

三、變數

在這里插入圖片描述

1、變數的定義

對于一個變數而言,有三部分組成:
??1)變數型別;
??2)變數名;
??3)變數地址;

  • 在C語言中,我們可以通過如下的方式定義一個變數:
    int Iloveyou;

1)變數型別

  • int表示變數型別,是英文單詞 Integer 的縮寫,意思是整數,

在這里插入圖片描述

2)變數名

  • Iloveyou表示變數名,也可以叫其它名字,例如:WhereIsHeroFromILoveYou1314等等,
  • 這個陳述句的含義是:在記憶體中找一塊區域,命名為Iloveyou,用它來存放整數,
  • 需要注意的是,最后有一個分號,int Iloveyou表達了一個陳述句,要用分號來結束,

在這里插入圖片描述

3)變數地址

在這里插入圖片描述

2、變數的賦值

  • C語言中可以用以下陳述句把 520 520 520 這個整數存盤到Iloveyou這個變數里:
    Iloveyou = 520;

在這里插入圖片描述

  • =在數學中叫 “等于號”,例如 1 + 1 = 2,但在C語言中,這個程序叫做變數的賦值,簡稱賦值,賦值是指把資料放到記憶體的程序,

3、變數的初始化

  • 把上面的兩個陳述句連起來,得到:
    int Iloveyou;
    Iloveyou = 520;
  • 當然,我們也可以寫成如下形式:
    int Iloveyou = 520;

在這里插入圖片描述

  • 兩段代碼的執行結果相同,都是把Iloveyou的值變成 520 520 520

在這里插入圖片描述

4、變數的由來

  • 如果我們需要,可以隨時改變它的值,如下代碼所示:
    int Iloveyou = 520;
    Iloveyou = 521;
    Iloveyou = 522;
    Iloveyou = 523;
  • 代碼執行完畢以后,它的值以最后一次賦值為準,正因為可以不斷修改,是可變的,所以才叫變數,

  • 簡單總結一下就是:資料是放在記憶體中的,變數是給這塊記憶體起的名字,有了變數就可以找到并使用這份資料,

5、多變數的定義

  • 如果幾個變數的型別一致,我們可以寫在一行上進行定義,如下:
    int x, y, z = 5;
  • 這段代碼代表一次性定義了三個整型型別的變數,并且將z初始化為 5,等價于如下代碼:
    int x; 
    int y;
    int z = 5;

6、變數間的賦值

  • 變數不能賦值給數字,但是變數可以賦值給變數,
    int a, b;
    520 = a;  // 錯誤
    a = b;    // 正確

在這里插入圖片描述

【例題1】給出如下代碼,求輸出結果是什么,

#include <stdio.h>
int main()
{
    int a = 1314, b = 520;
    b = a;
    a = b;
    printf("a=%d b=%d\n", a, b);
    return 0;
}

四、資料型別

在這里插入圖片描述

  • 接下來我們展開來講一下變數型別,更加確切的講,應該叫資料型別,C語言中有如下一些系統內置資料型別,

1、內置資料型別

  • 從上面這個表,我們可以看到,有表示字符的,有表示整數的,也有表示浮點數的,

在這里插入圖片描述

  • 先來簡單看下每種內置型別是如何進行定義的:
    char a = 'a';
    short b, c, d = 1314, e, f;
    int g = 5201314;
    long long h = 123456789;
    float i = 4.5;
    double j = 4.50000;

2、資料的大小

在這里插入圖片描述

  • 位元組是計算機中的一種基本單位,英文名為 Byte,計算機中所有的資料都是由位元組組成的,
  • 我們通常在計算機中看到的檔案單位 B 、K、M 、G、T 和位元組的關系如下:

  • 一個位元組在計算機里面是有 8 個位組成,一個位有 0 和 1 兩種狀態,所以一個位元組能表示的狀態數就是 2 8 = 256 2^8 = 256 28=256,如圖四-2-1,代表的是一個位元組的狀態,白色代表0,灰色代表1,它的二進制表示就是 ( 00001101 ) 2 (00001101)_2 (00001101)2?
    圖四-2-1

3、整數的表示范圍

  • 這樣一來,上面提到的幾種整數型別,能夠表示的整數就顯而易見了,假設位元組數為 n n n,那么能夠表示的整數個數就是能夠表示的狀態個數,即: 2 8 n 2^{8n} 28n
  • 由于我們需要表示負數 和 零,實際的每種整數資料型別能夠表示的數字范圍如下表所示:

五、變數名命名規則

  • 變數名需要滿足如下命名規則:
  • ( 1 ) (1) (1) 必須由字母、數字 或者下劃線構成,如 _aaa123_都是合法的變數,?a a#都是非法的變數;
  • ( 2 ) (2) (2) 不能以數字開頭,如123abc不是一個合法的變數名;
  • ( 3 ) (3) (3) 大小寫敏感,即大小寫看成不同,即oO不是同一個變數;
  • ( 4 ) (4) (4) 不能將變數名和C語言的語法保留關鍵字(例如:int、float、double 這些)同名;

【例題2】給出一段程式,請回答這段程式的運行結果,

#include <stdio.h>

int main()
{
	int IloveYou = 0;
	ILoveYou = 1314;
	ILoveYou = ILoveYou;
	ILoveYou = 520;
	printf("%d\n", ILoveYou);
    return 0;
}
  • 建議先看代碼,心里想著一個答案,然后再去 光天化日學C語言(01)- 第一個C語言程式 中提到的在線編譯環境中將代碼一行一行敲出來,看看和你自己想的結果是否一致,

  • 通過這一章,我們學會了 變數的定義、賦值、初始化,以及變數名命名規則,常用的資料型別,希望對你有幫助哦 ~ 祝大家早日成為 C 語言大神!

📢博客主頁:https://blog.csdn.net/WhereIsHeroFrom
📢歡迎各位 👍點贊 ?收藏 📝評論,如有錯誤請留言指正,非常感謝!
📢本文由 英雄哪里出來 原創,轉載請注明出處,首發于 🙉 CSDN 🙉
作者的專欄:
??👉C語言基礎專欄《光天化日學C語言》
??👉演算法進階專欄《夜深人靜寫演算法》
??👉奇奇怪怪的專欄《學姐教我寫代碼》

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/287505.html

標籤:其他

上一篇:【c++師傅領進門,修行靠個人】第三篇:單身狗福利!!new一個屬于你的物件

下一篇:kudu從0到1

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more