c語言的位制轉換

2021-09-16 22:27:43 字數 1927 閱讀 8732

c語言中格式控制符的作用

c語言中的強制型別轉換

c語言基礎型別包含有char,int, float, double等,顯而易見,不同型別的變數所佔的記憶體空間不同,然而當我們對這些不同資料型別進行位制轉換,那麼會發生什麼呢?

為了更好的理解在位置轉換,我們首先看乙個例子

#include

intmain

(int argc,

char

* ar**)

q:如何獲取c語言中常量的型別(在記憶體中的儲存形式)

或者c語言中的常量都是什麼資料型別呢?

看下面的例子

printf

("%f\n",5

);//常量5是什麼型別呢?在記憶體中占用了幾個位元組呢?

printf

("%f\n"

,5.01);

//常量5.01是什麼型別呢?在記憶體中占用了幾個位元組呢?

常量5是什麼型別呢?在記憶體中占用了幾個位元組呢?

常量5.01是什麼型別呢?在記憶體中占用了幾個位元組呢?

c語言中的常量型別可以通過sizeof來獲取

注意:sizeof函式返回值型別為long int

// sizeof函式的使用

int a =5;

printf

("%ld\n"

,sizeof

(int))

;// sizeof入口引數可以是型別名

printf

("%ld\n"

,sizeof

(a))

;// sizeof入口引數可以是變數名

printf

("%ld\n"

,sizeof(5

));// sizeof入口引數可以是常量

q: c語言中的格式控制符的本質分析

格式控制符主要用於printf語句和檔案的操作

注意:

c語言中int和float型別均為4個位元組,而double型別為8個位元組

在printf語句中,float會自動轉換成double,也就是,%f會從記憶體中讀取八個位元組的內容

c語言中的每個格式控制符均與特定的資料型別相對應,而這一切的本質均要從記憶體的角度去分析

%d => int 對應從記憶體中讀取四個位元組的資料

%f => double (float自動轉換為double型別) 對應從記憶體中讀取八個位元組的資料

%…例項1如下:

printf

("%f\n",5

);

分析如下:

引數5為int型,因此在記憶體中只占用四個位元組,

然而%f使得printf語句從記憶體中讀取八個位元組的資料。

顯然,記憶體訪問越界,會有不可預料的情況發生

例項2如下:

printf

("%ld\n"

,sizeof

(5.01))

;

分析如下:

引數5.01為double型,因此在記憶體中占用八個位元組,

然而%d使得printf語句從記憶體中僅僅讀取四個位元組的資料。

顯然,記憶體訪問不正確,同樣會有不可預料的情況發生

q1:具體分析 「int i = 5.01;」

將double型常量賦值給int型變數過程中會發生型別的強制轉換

資料型別在強制轉換過程中會發生什麼?

C語言 十進位制十六進製制轉換

乙個朋友提到十進位制數轉十六進製制後以字串輸出,基於此寫了兩段 以供參考,其中涉及陣列成員反轉,指標等特別基礎的用法。僅娛樂。include stdio.h include string.h include stdlib.h include limits.h define max size 100i...

C 語言十進位制和十六進製制的轉換

設計字串的拂去,字串的遍歷,還有ascii 碼。十進位制和十六進製制轉換的相關知識。1 十六進製制轉化為10 進製 include include include 返回ch字元在sign陣列中的序號 int getindexofsigns char ch int main int sum 0,t 0...

c語言二進位制數表示 C語言位操作

了解位的基本概念 熟悉二進位制數的運算方法 掌握各種位運算的方法和技巧 熟悉位段的基本概念 掌握位段中資料的引用方法 掌握數值的轉換方法和技巧 c語言區別於其他語言的重要特點是支援位運算,使其能夠完成組合語言所能完成的大部分功能。在實際的程式設計中借助與位運算往往可以設計出簡潔的演算法,使程式簡化,...