C語言小白學習――數據類型的轉換及轉換規則

2021-01-07 凌雲C語言遊戲開發

1.不同類型數據間的混合運算與類型轉換:

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

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

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

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

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

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

⑤在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度左邊長時,將丟失一部分數據

2.C語言轉換規則:

(1)整數和浮點型:

浮點型轉換成整型時,小數部分被省略,如果其值不能被整型表示,則其行為未定義。注意:將負的浮點型轉換成unsigned int 結果是沒有定義的。

當把整型轉換成浮點型時,如果該值是在可表示範圍內,則結果可能是下一個較高或者較低的可表示值。如果結果在範圍外,則行為未定義。

(2)浮點型:

將較低精讀浮點型轉換成較高浮點型時:值不變。

將較高精度轉換成較低精度時:在範圍內,值不變,在範圍外,結果為定義

(3)整型提升:

如果原始類型都可以用int表示,則將其轉換成int,否則被轉換成unsigned int

(4)整型轉換:

將unsigned 轉換成 signed 時,如果可以在新類型表示,則表示,如果不能表示,結果與具體實現有關,將signed 轉換成unsigned時,若unsigned位數窄,對二進位補碼進行左截取,若unsigned寬,對signed進行符號擴展。

(5)指針和整數:

指針可加上或著減去一個整數,轉換規則按照加法運算符號方式進行,兩個指向同一數組的指針可進行加減運算,方式按照算數轉換規則,值為0的整型常量或者void*型表達式可轉換成任意類型的指針,指針可以轉換成整型,注意整型必須足夠大,整型對象可以轉換成指針,一般用於將一個足夠寬的從指針轉換來的整型轉換成(恢復)指針,不同類型的指針間可以相互轉換,但必須滿足內存對齊條件,一個指針可以轉換成同意類型的另一個指針,但是可以增加或者刪除另一個指針的限制符,如果和另一個指針,增加了相同的修飾符,則和另一個指針一樣,如果刪除了修飾符,則底層對象的運算仍受到原聲明的限制。

更多精彩,請關注我的頭條號「c語言遊戲開發」。

相關焦點

  • JavaScript數據類型轉換
    ,所謂的動態語言可以暫時理解為在語言中的一切內容都是不確定的。雖然變量的數據類型是不確定的,但是各種運算符對數據類型是有要求的。如果運算符發現,運算子的類型與預期不符,就會自動轉換類型。本文主要介紹數據類型強制轉換和自動轉換,自動轉換是基於強制轉換之上。強制轉換主要指使用Number、String和Boolean三個函數,手動將各種類型的值,分布轉換成數字、字符串或者布爾值。
  • C 語言學習之變量、數據類型
    變量C 語言是強數據類型語言
  • 物聯網開發筆記——嵌入式開發之Linux系統中C語言數據類型
    嵌入式開發學習C語言打下基礎。本節介紹《Linux系統中C語言數據類型》。1 數據類型分類short、int、long、char、float、double 這六個關鍵字代表C 語言裡的六種基本數據類型。
  • 傳智播客Java學科:03數據類型轉換的規則、原理圖和編碼表
    一、數據類型轉換在Java的程式設計師中是要求參與運算的數據類型都是保持一致的,如果有數據類型不一致的情況將會發生類型的轉換。自動轉換我們將一個int類型變量和一個byte類型變量進行加法的運算話,結果會是什麼樣的數據類型?
  • c++之內存分配、命名空間、強制類型轉換學習總結
    一、C++動態內存分配:在學習c語言的時候,我們一般都是使用庫函數malloc()來進行內存的申請分配,然後使用庫函數free()來進行釋放申請到的內存;現在在c++裡面採用了另外一種內存申請的方法:c++中通過
  • java數據類型的轉換之自動轉換
    各位小夥伴們大家好,這次,小編要介紹的是數據類型的轉換,之前小編有提到過一些基本的數據類型。什麼是數據類型轉換呢?就是數據類型不一樣的時候,將會發生一些數據類型的轉換,比如可以將int型轉換成long型。
  • 釐清C++類型轉換
    的語言,提供了許多複雜和靈巧類型轉換的方式。筆者之前寫的Python與Go都是強類型的語言,對這種弱類型的設計實在是接受無力啊 ( 生活所迫,工作還得寫C++啊)C++語言提供了四種類型轉換的操作:static_cast,dynamic_cast,reinterpret_cast,const_cast,今天就來聊一聊,在C++之中應該如何來使用這些類型轉換的。
  • C/C++編程筆記:C語言中的類型轉換,今天教你怎麼寫!
    所謂類型轉換基本上是從一種類型到另一種類型的轉換。類型轉換有兩種類型: 一、隱式類型轉換 通常在表達式中存在多個數據類型時發生。在這種情況下,將進行類型轉換(類型提升)以避免數據丟失。 變量的所有數據類型將升級為具有最大數據類型的變量的數據類型。
  • 2.5 JavaScript數據類型的轉換
    JavaScript是一種弱類型的程式語言,使用時無須指定數據類型。但在對表達式進行求值時,通常需要所有的操作數都屬於某種特定的數據類型。例如,進行算術運算時要求操作數都是數值類型,進行字符串連接運算時要求操作數都是字符串類型,而進行邏輯運算時則要求操作數都是布爾類型,這就需要數據類型之間的轉換。
  • java數據類型的強制轉換及相關注意事項
    各位小夥伴們大家好,在上一篇文章中,小編介紹的是數據類型的自動轉換,這次小編要介紹的是數據類型的強制轉換。之前小編有講過,如果數據要進行自動類型轉換,就要符合從小到大的規則,如果不符合從小到大的規則,就無法進行自動類型轉換,如果這個時候就需要用到數據類型的強制轉換。
  • C語言中char int轉換問題
    printf("%d", a[0]-0);//輸出結果為32,int轉化為char*********************************** linux c ***********************************(1)字符串轉換成數字,用atoi,atol,atof,分別對應的是整型,long
  • java基礎案例之java語言組成和數據類型與強制類型轉換語法
    java語言組成包含:1:關鍵字,2:標識符。3:注釋。4:常量和變量。5:運算符 。 6:語句 7:函數 8:數組。java數據類型定義變量格式:數據類型 變量名 =初始化值;例如:int x =4;
  • R 語言和 Stata 中的數據轉換(透視/長寬數據轉換)
    歡迎各位培訓班的小夥伴收看明晚八點的直播課(專題課程):「R 語言和 Stata 中的數據轉換(透視/長寬數據轉換)」
  • 每日一課 | 如何在Python 3中轉換數據類型
    本本文主要講述轉換數字,字符串,元組和列表,並提供示例以幫助各位熟悉不同的用例。轉換數字類型在Python中,有兩種數字數據類型:整數和浮點數或浮點數。將整數轉換為浮點數 Python的方法float()會將整數轉換為浮點數。要使用此功能,請在括號內添加一個整數: 您也可以將其與變量一起使用。
  • MSSQL類型轉換函數-強制類型轉換(STR、CONVERT、CAST、PARSE)
    轉換函數將值從一種數據類型轉換為另一種。在資料庫中很多時候需要把一個類型的數據轉換成另一個數據類型來進行運算或者輸出顯示,這種轉換有的時候可以隱士的轉換有的時候就需要強制類型轉換。在保證數據正確的情況下進行強制類型轉換。
  • C 語言之進位轉換
    C語言進位轉換學不會,看了這個教程,你還算是學不會的話
  • 【教你R語言】轉換長寬格式表的落地方案
    ,會遇到長寬格式數據之間相互轉換的問題,之前介紹了如果在Hive是使用sql語句實現,現介紹一下如何在R語言中實現長寬格式數據相互轉換。【Hive】實現長格式數據轉換成寬格式數據【Hive】實現寬格式數據轉換成長格式數據長寬格式數據    之前在【Hive】實現長格式數據轉換成寬格式數據舉了一個慄子:    寬格式數據:每個變量單獨成一列為寬格式數據,變量的所有屬性都在同一行。
  • 一篇文章搞定JavaScript類型轉換
    文 | 流口水流一、先來看看JS的數據類型ECMAScript 中有 5 種簡單數據類型(也稱為基本數據類型): Undefined、 Null、布爾值(Boolean)、數字(Number) 和 字符串(String
  • python二級考試大綱考試內容:類型判斷和類型間轉換
    咱繼續按二級考試大綱學習python。我們知道python的基本數據類型是數字和字符串。如:123 和一二三。我們認為123是數字,一二三是字符串,我們的智能是這樣告訴我們的。python語言當然也能分辨出來數字和字符串,因為不符合它定義的代碼都會報錯。我們這裡說的類型判斷,其實是通過函數獲取數據的類型。
  • C語言簡明教程(二)數據類型
    >數據類型實驗簡介從本章開始我們將要引入大量的 C 語言程序案例,把算法和語法結合起來,通過引導大家由淺入深地編寫 C 程序,讓大家掌握 C 語言。也希望大家在學習的過程中勤動手,把每一個案例都自己來寫一遍。我們接下來將講述 C 語言的順序程序設計,由於 C 語言的順序程序設計並不容易獨立成章,也需要大家具有數據類型和表達式等相關的基礎知識,所以我們將順序程序設計這一大的章節分為以下幾個小節同時融入順序程序設計的相關例題。