日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

「C语言」数据类型及混合运算与类型转换

發布時間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 「C语言」数据类型及混合运算与类型转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? 深入學習C語言時,有必要先了解一下數據類型的概念,以及它們之間的混合運算與類型轉換。

??? 本篇文章便是根據《C語言程序設計教程》和在線翻閱資料后整理而出。(練習題將逐步更新)

?

目錄:

??? 一、概述

??? 二、類型修飾符

??? 三、各種數據類型介紹

??? 四、不同類型數據間的混合運算與類型轉換轉換

??? 五、練習

?

一、概述

?

??? 程序所能處理的基本數據對象被劃分成一些組或一些集合。它們都采用同樣的編碼方式,對它們能做同樣的操作。把程序中具有這樣性質的集合,成為數據類型。CPU對不同的數據類型提供了不同的操作指令

????C語言中的類型按其組成可以分為簡單類型和構造類型,按是否預定義了類型名字和值集可以分為基本類型和非基本類型,按是否加了類型限定符可以分為限定類型和非限定類型

??? 用ProcessOn作圖,C語言數據類型如下:

????

?

?

二、類型修飾符

?

??? 除void類型外,基本數據類型之前都可以加各種類型修飾符,類型修飾符有如下四種:

????? ? 1.signed----有符號,可修飾char、int。int是默認有符號的

?????? ?2.unsigned-----無符號,修飾int 、char

??????? 3.long------長型,修飾int 、double

??????? 4.short------短型,修飾int

?

?

三、各種數據類型介紹

?

??? 1.基本數據類型

??????? (以下各數據類型字長均指32位操作系統下,可用printf("%d",sizeof(數據類型名));進行測試。具體字長由具體編譯器決定,但確定的關系是:sizeof(short)≤sizeof(int)≤sizeof(long))

? ????? 整型:整形包括短整型、整形和長整形

? ??? ????? 短整型:

??????????????? 有符號短整型:short [int]??? 2byte?-32768~32767

??????????????? 無符號短整型:unsigned?short?[int]??? 2?byte?0~65535?

? ??? ????? 整型:

有符號整型:int?/signed?[int]?4?byte?-2147483648~2147483647 無符號整型:unsigned?[int]?4?byte?0~4294967295

? ?? ?????? 長整形:

??????????????? 有符號長整型:long?[int]/signed?long?[int]?4?byte?-2147483648~2147483647?

無符號長整型:unsigned?long?[int]?4?byte?0~4294967295

??????????? 超長整型(C99 標準添加的類型):long long?[int]? 8?byte?0~18446744073709552000?

??????? P.S(C語言中整型和長整形都占4字節的原因):

??????????? 早期的C編譯平臺下整形和長整型分別是2和4字節。隨著編譯平臺版本的升級,現在二者都是4字節,short是2字節。另外整型數的字長與CPU的字長沒有密切關系:早期的int是2字節,但那時的CPU也已經是32位的了;再者你把現在4字節int編譯平臺安裝在64位CPU機上去,同樣只能編譯4字節int的代碼,并不因為CPU成8字節了,你代碼中的int也成8字節了。(摘自百度知道)

?????????? long從字面上看,應該是64位才更合理,把long當成32位實在是一個歷史的包袱。像C#那樣新起爐灶的程序語言,由于沒有需要支持老代碼的問題,就把long當作64位來處理了。?

?????????? 在32位平臺下,long是相對short而言,long(short)類型是long(short)int類型的簡稱,sizeof(long)?=?sizeof(int)?=?4。int和long的范圍雖然一樣,但輸入輸出格式不同,printf?int的格式為%d,而printf?long的格式為%ld。

???????????考慮到程序的可移植性,還是要將他們區分開來。但當要求的數值范圍為4byte時,建議使用int類型,因為第一版的C語言只有一種類型,那就是int。(摘自百度文庫)

? ??????浮點型:

? ??? ? ????單精度浮點型:float??4?byte?-3.4E38~3.4E38?

? ??? ? ????雙精度浮點型:double?8?byte?1.7E308~1.7E308?long?double?8?byte

? ??????字符型:

有符號字符型:char/signed?char?1?byte?-128~127? 無符號字符型:unsigned?char?1?byte?0~255 寬字符型:wchar_t?(unsigned?short)?2?byte?0~65535 P.S:字符型賦值時可以是char c='a';也可以用字符對應的ASCII碼賦值:char c=97;

??? 2.指針類型:

??????? 有關指針的數據類型

???????????int?i ————定義整形變量i

???????????int?*p———-?p為指向整型變量的指針變量

???????????int?a[n]——-?定義整型數組a,它有n個元素

???????????int?*p[n]—–?定義指針數組p,它由n個指向整型數據的指針元素組成

???????????int?(*p)[n]?—p為指向含n個元素的一維數組的指針變量

???????????int?f()———?f為返回整數型函數值的元素

???????????int?*p()——-?p為返回一個指針,該指針指向整型數據 或 整形數組

???????????int?(*p)() —–p為指向函數的指針,該函數返回一個整數值

???????????int?**p—-?—-p是一個指針變量,它指向一個指向整數型數據的指針變量

???????? 延伸可參考:基于指針的數據類型與指針運算小結 http://www.jb51.net/article/41051.htm

?

??? 3.構造類型:struct

??????? C語言構造類型分為:數組類型,結構類型和共用體類型

??????? 數組類型:是由相同基本類型若干個元素組織在一起數據,它們有先后順序,也可以按這個順序對這些元素訪問
??????????? 如int a[10],共有10個元素,第個元素的類型都相同,都為整型
??????????? 這10 個元素,按順序分別是a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]

??????? 結構體類型:在C語言中,結構體(struct)指的是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變量、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問

??????????? 在C語言中,定義一個結構的一般形式為:

??????????? struct結構名

??????????? {

??????????????? //成員表列

??????????? };

??????? 延伸可參考:C語言結構體(struct)常見使用方法 http://blog.csdn.net/huqinwei987/article/details/23625823

??????? 共用體類型:union

??????????? 幾個不同的變量共同占用一段內存的結構,在C語言中,被稱作“共用體”類型結構,簡稱共用體。注:在某些書籍中可能稱之為“聯合體”,但是“共用體”更能反映該類型在內存的特點

????????????在C語言中,定義一個結構的一般形式為:

??????????? union 共用體名

{ 成員表列 }變量表列;

??? 4.空類型:void

??????? 常用在程序編寫中對定義函數的參數類型、返回值、函數中指針類型進行聲明。

??????? 具體參考void百科 http://baike.baidu.com/item/void/5126319?fr=aladdin

?

四、不同類型數據間的混合運算與類型轉換

?

??? 1.自動類型轉換

????????在C語言中,自動類型轉換遵循以下規則:

???????

??????? ①若參與運算量的類型不同,則先轉換成同一類型,然后進行運算

????????②轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型后再進行運算

????????? ? a、若兩種類型的字節數不同,轉換成字節數高的類型

????????? ? b、若兩種類型的字節數相同,且一種有符號,一種無符號,則轉換成無符號類型

????????③所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算

????????④char型和short型參與運算時,必須先轉換成int型

????????⑤在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分按四舍五入向前舍入

????????

??? 2.強制類型轉換

??????? 強制類型轉換一般格式如下:

??????????? (類型名)(表達式)

??????? 這種強制類型轉換操作并不改變操作數本身

?

?

五、練習題

?

??? (練習題將逐步更新)

?

?

參考鏈接:

??? C語言基本數據類型簡介:http://www.cnblogs.com/onedime/archive/2012/11/21/2780149.html

??? 深入解析unsigned int 和 int http://www.jb51.net/article/40518.htm

??? 強制類型轉換 http://baike.baidu.com/link?url=54pz-bWDJV2PiatUXXglxiY0pwuWVufjEyUuvl4N5k1Og7MnaohZ_lGEqboiaJVKw6l8Gy1UQOjT_DOO9R56xq

轉載于:https://www.cnblogs.com/corvoh/p/5141746.html

總結

以上是生活随笔為你收集整理的「C语言」数据类型及混合运算与类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。