C語言資料型別的自動轉換和強制轉換有什麼區別

2021-05-05 19:02:40 字數 3508 閱讀 7027

1樓:匿名使用者

c語言資料型別轉換分自動轉換和強制轉換兩類。

自動轉換

自動轉換髮生在不同資料型別的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:

1.若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。

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

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

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

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

強制型別轉換

強制型別轉換是通過型別轉換運算來實現的。其一般形式為: (型別說明符) (表示式) 其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。

例如: (float) a 把a轉換為實型(int)(x+y) 把x+y的結果轉換為整型在使用。

強制轉換時應注意以下問題:

1.型別說明符和表示式都必須加括號(單個變數可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。

2.無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行的臨時性轉換,而不改變資料說明時對該變數定義的型別。

具體如下:

char short->int->usigned->long->double

float->double

2樓:匿名使用者

這個還真是有點忘記了。自動轉換是不是 int i=5/9; 這個算自動轉換麼?或則double i=1.

0;等等 這些都算自動轉換把int a=(int)(1.0); 這個算強制 其他就不知道了。。

3樓:匿名使用者

自動轉化、一般都是小的轉換成大的、 例如、本來是一個int型別、如果int型別和double型別進行計算、那麼、得到的結果就是double型別、而你接收他的值可能是int型別在接受 例如 int a = 10 * 12.55 其中 10 *12.55 的結果會自動轉換為double型別 這個時候你的int型別的 a 用來接收、就會出錯、強制轉換就是、 你把結果強制轉換成 int 型別、但是會損失精度、(去除小數點以後的位數)稱為一個整數 值得注意的是、自動轉換 當中、 小的資料型別轉換成大的資料型別沒有錯、 但是、當大的型別轉換成小的型別的時候、就會出錯、

c語言資料型別的自動轉換和強制轉換有什麼區別

4樓:學雅思

一、指代不同

1、自動轉換:參與運算量的型別不同,則先轉換成同一型別,然後進行運算。

2、強制轉換:是通過型別轉換運算來實現的。

二、方式不同

1、自動轉換:轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。

2、強制轉換:功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。

三、特點不同

1、自動轉換:是在源型別和目標型別相容以及目標型別廣於源型別時發生一個型別到另一類的轉換。

2、強制轉換:所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表示式,也要先轉換成double型,再作運算。

5樓:濺糝埤

c語言資料型別轉換分自動轉換和強制轉換兩類。

自動轉換自動轉換髮生在不同資料型別的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:

1.若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。

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

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

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

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

強制型別轉換

強制型別轉換是通過型別轉換運算來實現的。其一般形式為: (型別說明符) (表示式) 其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。

例如: (float) a 把a轉換為實型(int)(x+y) 把x+y的結果轉換為整型在使用。

強制轉換時應注意以下問題:

1.型別說明符和表示式都必須加括號(單個變數可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。

2.無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行的臨時性轉換,而不改變資料說明時對該變數定義的型別。

c語言中 強制型別轉換的一般形式是什麼?

6樓:福建省寧德市

強制型別轉換的一般形式為:(型別說明符)(表示式),例如: (float) a 把a轉換為浮點型,(int)(x+y) 把x+y的結果轉換為 整型

強制型別轉換是通過型別轉換運算來實現的。功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。

注意事項:①型別說明符和 表示式都必須加括號(單個 變數可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。

②無論是 強制轉換或是自動轉換,都只是為了本次運算的需要而對 變數的資料長度進行的臨時性轉換,而不改變資料說明時對該 變數定義的型別。

7樓:匿名使用者

當運算元的

型別不同,而且不屬於基本資料型別時,經常需要強制型別轉換,將運算元轉化為所需要的型別。

型別轉換;   1.自動型別轉換   2.強制型別轉換   自動型別轉換分兩種情況:

1,不同型別的資料進行運算時,系統會自動將運算優先順序別低的轉換成級別高的,結果和運算級別高的資料型別一樣。2,賦值運算子兩邊型別不一樣時,系統會自動將右側表示式的型別轉換成左側的變數型別,然後再賦值   強制型別轉換:   如:

(int)3.1415 //就是取整數部分   (int)a%10 //取a的個位數   若a是int型,取a的平方根就是 sqrt((double)a)

8樓:岩石の審判

int a=3; //定義整型a

double b=(double)a; //強制把整型a轉換為雙精度實型

9樓:分子路徑

假設double a;把a轉換成int型

int(a)

或(int)a都可以

10樓:藍藍肥皂

double x;

int y;

y=(int)x;

c語言多種資料型別混合輸入,C語言多種資料型別混合輸入

用字串就輸出了!比如 int main void 這樣輸入的只要是可顯示字元就都能輸出了 c語言中,每一種輸入控制符可以用來輸入哪種資料型別?a,a 讀入一個浮點值 僅c99有效 c 讀入一個字元 d 讀入十進位制整數 i 讀入十進位制,八進位制,十六進位制整數 o 讀入八進位制整數 x,x 讀入十...

c語言基礎問題求各類資料型別的長度

int 32位 多少位的系統上用等位數的編譯器編譯則為多少位,一般32 char 8位 long int 32位 folat 64位 double 128位 不同的編譯器會有不同的長度建議自己測試一下如 printf int d sizeof int printf char d sizeof cha...

c語言中的float資料型別的有效數字為什麼是67位

float資料 機器內是2進位制數,1位符號位 8位指數位 23位 尾數 位 共32 位 2進位制數。平時講 有效數字 是6 7位 指10進位制。通常程式輸入的數是10進位制,進入機器後要化成2進位制,計算完又轉十進位制輸出。10進位制到2進位制,2進位制到10進位制 轉換,有的數化不淨,有的數化得...