真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語(yǔ)言函數(shù)格式轉(zhuǎn)換 c語(yǔ)言格式轉(zhuǎn)換符號(hào)

c語(yǔ)言中如何將short,int,long,float這些類型的數(shù)值轉(zhuǎn)換為字符串?

可以使用sprintf函數(shù)轉(zhuǎn)換。

為臨夏等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及臨夏網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、臨夏網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1、對(duì)于整型,各個(gè)平臺(tái)有一些函數(shù)可以專門轉(zhuǎn)換,比如itoa等。

不過(guò)更通用的做法是使用sprintf函數(shù)。

2、聲明:

int sprintf(char *dst, const char *format_string, ...);

頭文件為stdio.h。

3、功能:

sprintf是一個(gè)不定參數(shù)函數(shù),根據(jù)format_string中提供的格式符,將后續(xù)參數(shù)轉(zhuǎn)為字符串存儲(chǔ)在第一個(gè)參數(shù)dst中。

4、使用示例:

short?a=1;

int?b=2;

long?c=3;

float?d=4;

char?buf[100];

sprintf(buf,?"%hd?%d?%ld?%f",a,b,c,d);//按照格式,將四個(gè)變量存儲(chǔ)在字符串中。

執(zhí)行后,buf中字符串為"1 2 3 4.000000"。

格式字符串使用方法與輸出函數(shù)printf相同。

C語(yǔ)言數(shù)據(jù)類型的轉(zhuǎn)換

讓我來(lái)說(shuō)說(shuō)這個(gè)問(wèn)題吧。

一.自動(dòng)轉(zhuǎn)換

自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:

1) 若參與運(yùn)算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。

2) 轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低。如int型和long型運(yùn)算時(shí),先把int量轉(zhuǎn)成long型后再進(jìn)行運(yùn)算。

a.若兩種類型的字節(jié)數(shù)不同,轉(zhuǎn)換成字節(jié)數(shù)高的類型

b.若兩種類型的字節(jié)數(shù)相同,且一種有符號(hào),一種無(wú)符號(hào),則轉(zhuǎn)換成無(wú)符號(hào)類型

3)所有的浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精度量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再作運(yùn)算。

4)char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。

5)在賦值運(yùn)算中,賦值號(hào)兩邊量的數(shù)據(jù)類型不同時(shí),賦值號(hào)右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長(zhǎng)度左邊長(zhǎng)時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四舍五入向前舍入。

二.隱式轉(zhuǎn)換

隱式類型轉(zhuǎn)換分三種,即算術(shù)轉(zhuǎn)換、賦值轉(zhuǎn)換和輸出轉(zhuǎn)換。

1.算術(shù)轉(zhuǎn)換

進(jìn)行算術(shù)運(yùn)算(加、減、乘、除、取余以及符號(hào)運(yùn)算)時(shí),不同類型數(shù)招必須轉(zhuǎn)換成同一類型的數(shù)據(jù)才能運(yùn)算,算術(shù)轉(zhuǎn)換原則為:

在進(jìn)行運(yùn)算時(shí),以表達(dá)式中最長(zhǎng)類型為主,將其他類型位據(jù)均轉(zhuǎn)換成該類型,如:

(1)若運(yùn)算數(shù)中有double型或float型,則其他類型數(shù)據(jù)均轉(zhuǎn)換成double類型進(jìn)行運(yùn)算。

(2)若運(yùn)算數(shù)中最長(zhǎng)的類型為long型.則其他類型數(shù)均轉(zhuǎn)換成long型數(shù)。

(3)若運(yùn)算數(shù)中最長(zhǎng)類型為int型,則char型也轉(zhuǎn)換成int型進(jìn)行運(yùn)算。算術(shù)轉(zhuǎn)換是在運(yùn)算過(guò)程中自動(dòng)完成的。

2.賦值轉(zhuǎn)換

進(jìn)行賦值操作時(shí),賦值運(yùn)算符右邊的數(shù)據(jù)類型必須轉(zhuǎn)換成賦值號(hào)左邊的類型,若右邊的數(shù)據(jù)類型的長(zhǎng)度大于左邊,則要進(jìn)行截?cái)嗷蛏崛氩僮鳌?/p>

下面用一實(shí)例說(shuō)明:

char ch;

int i,result;

float f;

double d;

result=ch/i+(f*d-i);

(1)首先計(jì)算 ch/i,ch → int型,ch/i → int型。

(2)接著計(jì)算 f*d-i,由于最長(zhǎng)型為double型,故f→double型,i→double型,f*d-i→double型。

(3)(ch/i) 和(f*d-i)進(jìn)行加運(yùn)算,由于f*d-i為double型,故ch/i→double型,ch/i+(f*d-i)→double型。

(4)由于result為int型,故ch/i+(f*d-i)→double→int,即進(jìn)行截?cái)嗯c舍入,最后取值為整型。

3.輸出轉(zhuǎn)換

在程序中將數(shù)據(jù)用printf函數(shù)以指定格式輸出時(shí),當(dāng)要輸出的鹽據(jù)類型與輸出格式不符時(shí),便自動(dòng)進(jìn)行類型轉(zhuǎn)換,如一個(gè)long型數(shù)據(jù)用整型格式(%d)輸出時(shí),則相當(dāng)于將long型轉(zhuǎn)換成整型(int)數(shù)據(jù)輸出;一個(gè)字符(char)型數(shù)據(jù)用整型格式輸出時(shí),相當(dāng)于將char型轉(zhuǎn)換成int型輸出。

注意:較長(zhǎng)型數(shù)據(jù)轉(zhuǎn)換成短型數(shù)據(jù)輸出時(shí),其值不能超出短型數(shù)據(jù)允許的值范圍,否則轉(zhuǎn)換時(shí)將出錯(cuò)。如:

long a=80000;

printf("%d",a);

運(yùn)行結(jié)果為14464,因?yàn)閕nt型允許的最大值為32767,80000超出此值,故結(jié)果取以32768為模的余數(shù),即進(jìn)行如下取余運(yùn)算:

(80000-32768)-32768=14464;

輸出的數(shù)據(jù)類型與輸出格式不符時(shí)常常發(fā)生錯(cuò)誤,如:

int d=9;

printf("%f",d);

float c=3.2;

printf("%d",c);

將產(chǎn)生錯(cuò)誤的結(jié)果。

同一句語(yǔ)句或表達(dá)式如果使用了多種類型的變量和常量(類型混用),C 會(huì)自動(dòng)把它們轉(zhuǎn)換成同一種類型。以下是自動(dòng)類型轉(zhuǎn)換的基本規(guī)則:

1. 在表達(dá)式中,char 和 short 類型的值,無(wú)論有符號(hào)還是無(wú)符號(hào),都會(huì)自動(dòng)轉(zhuǎn)換成 int 或者 unsigned int(如果 short 的大小和 int 一樣,unsigned short 的表示范圍就大于 int,在這種情況下,unsigned short 被轉(zhuǎn)換成 unsigned int)。因?yàn)樗鼈儽晦D(zhuǎn)換成表示范圍更大的類型,故而把這種轉(zhuǎn)換稱為“升級(jí)(promotion)”。

2. 按照從高到低的順序給各種數(shù)據(jù)類型分等級(jí),依次為:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。這里有一個(gè)小小的例外,如果 long 和 int 大小相同,則 unsigned int 的等級(jí)應(yīng)位于 long 之上。char 和 short 并沒(méi)有出現(xiàn)于這個(gè)等級(jí)列表,是因?yàn)樗鼈儜?yīng)該已經(jīng)被升級(jí)成了 int 或者 unsigned int。

3. 在任何涉及兩種數(shù)據(jù)類型的操作中,它們之間等級(jí)較低的類型會(huì)被轉(zhuǎn)換成等級(jí)較高的類型。

4. 在賦值語(yǔ)句中,= 右邊的值在賦予 = 左邊的變量之前,首先要將右邊的值的數(shù)據(jù)類型轉(zhuǎn)換成左邊變量的類型。也就是說(shuō),左邊變量是什么數(shù)據(jù)類型,右邊的值就要轉(zhuǎn)換成什么數(shù)據(jù)類型的值。這個(gè)過(guò)程可能導(dǎo)致右邊的值的類型升級(jí),也可能導(dǎo)致其類型降級(jí)(demotion)。所謂“降級(jí)”,是指等級(jí)較高的類型被轉(zhuǎn)換成等級(jí)較低的類型。

5. 作為參數(shù)傳遞給函數(shù)時(shí),char 和 short 會(huì)被轉(zhuǎn)換成 int,float 會(huì)被轉(zhuǎn)換成 double。使用函數(shù)原型可以避免這種自動(dòng)升級(jí)。

三.強(qiáng)制轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換是通過(guò)類型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其一般形式為:(類型說(shuō)明符)(表達(dá)式)其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說(shuō)明符所表示的類型。自動(dòng)轉(zhuǎn)換是在源類型和目標(biāo)類型兼容以及目標(biāo)類型廣于源類型時(shí)發(fā)生一個(gè)類型到另一類的轉(zhuǎn)換。例如: (float) a 把a(bǔ)轉(zhuǎn)換為實(shí)型,(int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型。在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題:

1.類型說(shuō)明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫(xiě)成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了。

2.無(wú)論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說(shuō)明時(shí)對(duì)該變量定義的類型。

例1:

main()

{

float f=5.75;

printf("(int)f=%d,f=%f\n",(int)f,f);

}

f--5.75

將float f強(qiáng)制轉(zhuǎn)換成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f雖強(qiáng)制轉(zhuǎn)為int型,但只在運(yùn)算中起作用, 是臨時(shí)的,而f本身的類型并不改變。因此,(int)f的值為 5(刪去了小數(shù))而f的值仍為5.75。

C語(yǔ)言數(shù)據(jù)類型如何轉(zhuǎn)換?

不是有強(qiáng)制類型轉(zhuǎn)換嗎?

強(qiáng)制類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換

當(dāng)操作數(shù)的類型不同,而且不屬于基本數(shù)據(jù)類型時(shí),經(jīng)常需要強(qiáng)制類型轉(zhuǎn)換,將操作數(shù)轉(zhuǎn)化為所需要的類型。強(qiáng)制類型轉(zhuǎn)換具有兩種形式,稱為顯式強(qiáng)制轉(zhuǎn)換和隱式強(qiáng)制類型轉(zhuǎn)換。

1、顯式強(qiáng)制類型轉(zhuǎn)換

顯式強(qiáng)制類型轉(zhuǎn)換需要使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,格式如下:

type(expression)

(type)expression

其中,type為類型描述符,如int,float等。expression為表達(dá)式。經(jīng)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符運(yùn)算后,返回一個(gè)具有type類型的數(shù)值,這種強(qiáng)制類型轉(zhuǎn)換操作并不改變操作數(shù)本身,運(yùn)算后操作數(shù)本身未改變,例如:

int nVar=0xab65;

char cChar=char (nVar);

上述強(qiáng)制類型轉(zhuǎn)換的結(jié)果是將整型值0xab65的高端兩個(gè)字節(jié)刪掉,將低端兩個(gè)字節(jié)的內(nèi)容作為char型數(shù)值賦值給變量cChar,而經(jīng)過(guò)類型轉(zhuǎn)換后nVar的值并未改變。

2、隱式強(qiáng)制類型轉(zhuǎn)換

隱式類型轉(zhuǎn)換發(fā)生在賦值表達(dá)式和有返回值的函數(shù)調(diào)用表達(dá)式中。在賦值表達(dá)式中,如果賦值符左右兩側(cè)的操作數(shù)類型不同,則將賦值符右邊操作數(shù)強(qiáng)制轉(zhuǎn)換為賦值符左側(cè)的類型數(shù)值后,賦值給賦值符左側(cè)的變量。在函數(shù)調(diào)用時(shí),如果return后面表達(dá)式的類型與函數(shù)返回值類型不同,則在返回值時(shí)將return后面表達(dá)式的數(shù)值強(qiáng)制轉(zhuǎn)換為函數(shù)返回值類型后,再將值返回,如:

int nVar;

double dVar=3.88;

nVar=dVar;//執(zhí)行本句后,nVar的值為3,而dVar的值仍是3.88

1,若已知x,y為double類型,則表達(dá)式:x=1,y=x+3/2結(jié)果是多少啊?

因?yàn)閤,y都是double型,所以執(zhí)行了y=x+3/2這個(gè)語(yǔ)句后,會(huì)輸出小樹(shù)部分,double型默認(rèn)的是小數(shù)點(diǎn)后幾位我忘了,你自己調(diào)試下,就會(huì)明白了!

c語(yǔ)言 編寫(xiě)函數(shù):字符串的大小寫(xiě)轉(zhuǎn)換

#include?stdio.h

void?str_trans(char?c[])

{

for(int?i=0;c[i];i++)

{

if(c[i]='z'??c[i]='a')

{

c[i]=(c[i]-'a')+'A';

}else?if(c[i]='A'c[i]='Z')

{

c[i]=(c[i]-'A')+'a';

}

}

}

int?main()

{?char?s[101];

gets(s);

str_trans(s);

puts(s);

scanf("%s",s);

return?0;

}


文章名稱:C語(yǔ)言函數(shù)格式轉(zhuǎn)換 c語(yǔ)言格式轉(zhuǎn)換符號(hào)
網(wǎng)站URL:http://weahome.cn/article/ddipgoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部