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等。這個的話要看你具體的環境了,一般都會有說明手冊的。不同的資料型別最終體現在每次分配的儲存空間不同。其實你如...