c語言資料型別如何轉換C語言資料型別如何轉換?

2021-05-20 10:40:29 字數 5988 閱讀 4306

1樓:匿名使用者

不是有強制型別

轉換嗎?

強制型別轉換 強制型別轉換

當運算元的型別不同,而且不屬於基本資料型別時,經常需要強制型別轉換,將運算元轉化為所需要的型別。強制型別轉換具有兩種形式,稱為顯式強制轉換和隱式強制型別轉換。

1、顯式強制型別轉換

顯式強制型別轉換需要使用強制型別轉換運算子,格式如下:

type()

或(type)

其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回一個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如:

int nvar=0xab65;

char cchar=char (nvar);

上述強制型別轉換的結果是將整型值0xab65的高階兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cchar,而經過型別轉換後nvar的值並未改變。

2、隱式強制型別轉換

隱式型別轉換髮生在賦值表示式和有返回值的函式呼叫表示式中。在賦值表示式中,如果賦值符左右兩側的運算元型別不同,則將賦值符右邊運算元強制轉換為賦值符左側的型別數值後,賦值給賦值符左側的變數。在函式呼叫時,如果return後面表示式的型別與函式返回值型別不同,則在返回值時將return後面表示式的數值強制轉換為函式返回值型別後,再將值返回,如:

int nvar;

double dvar=3.88;

nvar=dvar;//執行本句後,nvar的值為3,而dvar的值仍是3.88

1,若已知x,y為double型別,則表示式:x=1,y=x+3/2結果是多少啊?

因為x,y都是double型,所以執行了y=x+3/2這個語句後,會輸出小樹部分,double型預設的是小數點後幾位我忘了,你自己除錯下,就會明白了!

2樓:考潤劉原

自動轉換和隱式轉換是一類的吧。比如int

a;charb=

2;a=b

*2;//這裡b的值就自動/隱式轉換為int型別關於強制轉換比floata=

(float

)1/2謝謝採納

在c語言中不同的資料型別之間是如何轉換的 不同的資料型別是怎樣計算的

3樓:手機使用者

在c語言中,不同資料型別在進行運算時首先要轉換成同一型別,一種是自動轉換,二是強制轉換,如(int)a 將a強制轉換為int型 轉換原則:箭頭是轉換方向 char,short->int->unsigned->long,float->double 說這個題之前要接受一個事實:不同計算機上執行此程式結果會不一樣,原因和你是好多位計算機有關係,在很多書上int佔兩個位元組,而在有些計算機卻佔4個位元組,具體是好多你可以用sizeof(int)測試一下,那我的計算機就佔4個位元組,現在再看題:

c=x+a x為長整型a為整型,運算之前先將a自動轉換為長整型,x=-5,計算機儲存為0fffffffbh,a=3,x+a=0fffffffeh 輸出格式是%u 也就是以十進位制無符號形式輸出,結果為4294967294而不是65534。d=y+b,a=3就不用多說明了,最後用%f輸出單精度或雙精度浮點數,其預設為6位小數,要想控制顯示位數用%m.nf,具體看看書哈

c語言資料型別轉換的意義?

4樓:匿名使用者

的確,對初學者來說,大部分時候其實是用不上強制資料型別轉換的。學型別轉換的意義最主要是讓你理解這個概念,因為雖然你沒寫出來,但其實自動型別轉換幾乎每時每刻都在發生。

比如你寫表示式 5/0.5,5 是被識別成整型的,0.5 被識別成浮點型,這兩個型別間是不能做運算的,所以發生了自動型別轉換,把整型提升為了浮點型再繼續運算。

學習了型別轉換的概念和用法,對你平時寫程式排查問題等等都很有幫助的。以後的知識裡資料型別轉換會出現得更頻繁。比如你會遇到 malloc 函式,這個函式返回的是任意型別的指標 void*,你需要做一次強制型別轉換來使用:

int* p = (int*)malloc(sizeof(int));

5樓:沃然網路

學型別轉換的意義最主要是讓你理解這個概念

請問c語言如何實現資料型別的強制轉化?

6樓:匿名使用者

當運算元的型別不同,而且不屬於基本資料型別時,經常需要強制型別轉換,將運算元轉化為所需要的型別。強制型別轉換具有兩種形式,稱為顯式強制轉換和隱式強制型別轉換。

1、顯式強制型別轉換

顯式強制型別轉換需要使用強制型別轉換運算子,格式如下:

type()

或(type)

其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回一個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如:

int nvar=0xab65;

char cchar=char (nvar);

上述強制型別轉換的結果是將整型值0xab65的高階兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cchar,而經過型別轉換後nvar的值並未改變。

2、隱式強制型別轉換

隱式型別轉換髮生在賦值表示式和有返回值的函式呼叫表示式中。在賦值表示式中,如果賦值符左右兩側的運算元型別不同,則將賦值符右邊運算元強制轉換為賦值符左側的型別數值後,賦值給賦值符左側的變數。在函式呼叫時,如果return後面表示式的型別與函式返回值型別不同,則在返回值時將return後面表示式的數值強制轉換為函式返回值型別後,再將值返回,如:

int nvar;

double dvar=3.88;

nvar=dvar;//執行本句後,nvar的值為3,而dvar的值仍是3.88

1,若已知x,y為double型別,則表示式:x=1,y=x+3/2結果是多少啊?

因為x,y都是double型,所以執行了y=x+3/2這個語句後,會輸出小樹部分,double型預設的是小數點後幾位我忘了,你自己除錯下,就會明白了!

7樓:匿名使用者

在c語言中,強bai制型別轉換du

的格式為:(zhi型別)變數或表示式。dao而在c++語言中,回

強制型別轉換的格答式為:型別(變數或表示式)。

例如float a=3.14,將其強制轉移成int型並賦給整型變數b,c語言為:b=(int)a;c++為:b=int(a)。

另外,補充說明一下,整型和字元型其實是通用的,在計算機中字元存的是其ascii值。

8樓:匿名使用者

c編譯器中整型常量來預設為int型,即源65這個數是int型的,由於65<127(char型的範圍[-128,127]),可以轉化為char型即char c=65;合法,使用輸出語句printf("%c", c);可以輸出他的字元形式即'a'。

對於其他型別的轉換,如果精度不損失可以預設轉換,如:

char c = 65;

int i = c;//預設轉換

否者需要強轉,如:

int i = 65;

char c = (int)i;//強轉

9樓:灰色8酷

#include

using namespace std;

int main()

10樓:匿名使用者

char b;

//a='a';

b=65;

printf("%c",b);

輸出為 a 懂了麼???!請採納

c語言中資料型別的轉換

11樓:匿名使用者

#include "stdio.h"

main()

輸出的資料型別不匹配

12樓:匿名使用者

給你舉個例子吧

j=i++,實際j值和i一樣

j=++i,實際j值比i大一

你還沒明白

i++ ; //注意它是在i使用後自動加一printf("%d","i");

這是兩句命令,執行完i++後才輸出,i值自然+1++j ; //它是在使用前加一

printf("%d","j");

也是兩句命令,執行完++j後才輸出,j值自然也+1了若是printf("%d",i++); printf("%d",++i);

這兩句,你就能看出區別了.另指出一個問題,printf("%d",i);中的i不需要""的,否則輸出的是字元i不是i值

%d 是對應整型資料的。

%f 是對應浮點數的。

13樓:貢雨燕定香

原發布者:maximus851204

1資料型別關鍵字a.基本資料型別(5個)  void:宣告函式無返回值或無參

數,宣告無型別指標,顯式丟棄運算結果  char:字元型型別資料,屬於整型資料的一種  int:整型資料,通常為編譯器指定的機器字長  float:

單精度浮點型資料,屬於浮點資料的一種  double:雙精度浮點型資料,屬於浮點資料的一種  b.型別修飾關鍵字(4個)  short:

修飾int,短整型資料,可省略被修飾的int。  long:修飾int,長整形資料,可省略被修飾的int。

  signed:修飾整型資料,有符號資料型別  unsigned:修飾整型資料,無符號資料型別  c.

複雜型別關鍵字(5個)  struct:結構體宣告  union:共用體宣告  enum:

列舉宣告  typedef:宣告型別別名  sizeof:得到特定型別或特定型別變數的大小  d.

儲存級別關鍵字(6個)  auto:指定為自動變數,由編譯器自動分配及釋放。通常在棧上分配  static:

指定為靜態變數,分配在靜態變數區,修飾函式時,指定函式作用域為檔案內部  register:指定為暫存器變數,建議編譯器將變數儲存到暫存器中使用,也可以修飾函式形參,建議編譯器通過暫存器而不是堆疊傳遞引數  extern:指定對應變數為外部變數,即標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。

  const:與volatile合稱「cv特性」,指定變數不可被當前執行緒/程序改變(但有可能被系統或其他線

14樓:姓從蓉祕素

不是有強制

型別轉換嗎?

強制型別轉換

強制型別轉換

當運算元的型別不同,而且不屬於基本資料型別時,經常需要強制型別轉換,將運算元轉化為所需要的型別。強制型別轉換具有兩種形式,稱為顯式強制轉換和隱式強制型別轉換。

1、顯式強制型別轉換

顯式強制型別轉換需要使用強制型別轉換運算子,格式如下:

type()

或(type)

其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回一個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如:

intnvar=0xab65;

char

cchar=char

(nvar);

上述強制型別轉換的結果是將整型值0xab65的高階兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cchar,而經過型別轉換後nvar的值並未改變。

2、隱式強制型別轉換

隱式型別轉換髮生在賦值表示式和有返回值的函式呼叫表示式中。在賦值表示式中,如果賦值符左右兩側的運算元型別不同,則將賦值符右邊運算元強制轉換為賦值符左側的型別數值後,賦值給賦值符左側的變數。在函式呼叫時,如果return後面表示式的型別與函式返回值型別不同,則在返回值時將return後面表示式的數值強制轉換為函式返回值型別後,再將值返回,如:

intnvar;

double

dvar=3.88;

nvar=dvar;//執行本句後,nvar的值為3,而dvar的值仍是3.88

1,若已知x,y為double型別,則表示式:x=1,y=x+3/2結果是多少啊?

因為x,y都是double型,所以執行了y=x+3/2這個語句後,會輸出小樹部分,double型預設的是小數點後幾位我忘了,你自己除錯下,就會明白了!

c語言,如何檢測變數的資料型別,C語言,如何檢測變數的資料型別?

話說,你理解抄 錯了。型別的定義其實是為了讓人能更好的理解。對電腦來說,任何變數只有位元組大小的差異。我給你舉個例子,你就很好理解了 變數 a 在記憶體中用二進位制表示為 11111111111111111111111111111111 如果a 定義為int 則表示為 1,如果a定義為unsigne...

關於c語言資料型別的問題,關於C語言資料型別的問題

因為有的資料比較長,比如1111111111111111,這樣用int就存不下了,要用長整型來儲存了 可能強制轉換時要用到吧 這只是我的觀點 long long hello 1 2147483647 cout hello endl cout int max endl hello右邊表示式 是1 in...

嵌入式c語言資料型別和標準c語言的資料型別是一樣的嗎,如果不一樣請舉例說明下謝謝

嵌入式c語言資料型別和標準c語言的資料型別是一樣的,都是ansic。但是使用方式有區別 嵌入式c語言資料 型別非常嚴格,對有符號無符號限定很嚴格,例如對資料很大時使用unsigned int等。這個的話要看你具體的環境了,一般都會有說明手冊的。不同的資料型別最終體現在每次分配的儲存空間不同。其實你如...