找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3901|回復(fù): 0
收起左側(cè)

經(jīng)驗(yàn)之談_C語言強(qiáng)制類型轉(zhuǎn)換運(yùn)算

[復(fù)制鏈接]
ID:475247 發(fā)表于 2019-2-10 16:22 | 顯示全部樓層 |閱讀模式

經(jīng)驗(yàn)之談_C語言強(qiáng)制類型轉(zhuǎn)換運(yùn)算

C語言中的強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的。
其一般形式為:
(類型說明符)(表達(dá)式)
其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。
例如:
(float)a 把a(bǔ) 轉(zhuǎn)換為實(shí)型
(int)(x+y) 把x+y 的結(jié)果轉(zhuǎn)換為整形
在使用強(qiáng)制轉(zhuǎn)換時應(yīng)注意以下問題:
1)類型說明符和表達(dá)式都必須加括號(單個變量可以不加括號) ,如果把(int)
(x+y)寫成( int)x+y 則成了把x 轉(zhuǎn)換成int 型之后再與y 相加了。
2)無論是強(qiáng)制轉(zhuǎn)換或是自動轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對變量的
數(shù)據(jù)長度進(jìn)行的臨時性的轉(zhuǎn)換,而不改變數(shù)據(jù)說明時對該變量定義的類型。
【例1】
#include <stdio.h>
int main (void)
{
float f = 3.14;
printf("(int)f = %d,f = %.2f\n",(int)f,f);
return 0;
}
本例表明, f 雖強(qiáng)制轉(zhuǎn)為int 型,但只在運(yùn)算中起作用,是臨時的,而f 本身
的類型并不改變。因此, (int)f 的值為5(刪去了小數(shù))而f 的值仍為5.75.
1、求余運(yùn)算符(模運(yùn)算符) “%”:雙目運(yùn)算,具有左結(jié)合性。要求參與運(yùn)
算的量均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。
#include <stdio.h>
int main (void)
{
printf(" %d\n",110%3);
return 0;
}
本例輸出110 除以3 所得的余數(shù)2。
2、算數(shù)表達(dá)式和運(yùn)算符的優(yōu)先級和結(jié)合性
表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來的式子。一個表達(dá)式有一個
值及其類型, 他們等于計(jì)算表達(dá)式所得結(jié)果的值和類型。表達(dá)式求值按運(yùn)算符的
優(yōu)先級和結(jié)合性規(guī)定的順序進(jìn)行。單個的常量、變量、函數(shù)可以看作是表達(dá)式的
特例。
算數(shù)表達(dá)式是由算術(shù)運(yùn)算符和括號連接起來的式子。
算數(shù)表達(dá)式:用算數(shù)運(yùn)算符和括號將運(yùn)算對象(也稱操作數(shù))連接起來的、
符合C語法規(guī)則的式子。
以下是算數(shù)表達(dá)式的例子:
a+b;
(a*2)/c;
(x+r)*8-(a+b)/7;
++I;
Sin(x)+sin(y);
(++i)-(j++)+(k--);
運(yùn)算符的優(yōu)先級: C語言中,運(yùn)算符的運(yùn)算優(yōu)先級共分為15 級。1 級最高,
15 級最低。在表達(dá)式中,優(yōu)先級較高的先于優(yōu)先級較低的進(jìn)行運(yùn)算。而在一個
運(yùn)算量兩側(cè)的運(yùn)算符優(yōu)先級相同時,則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處
理。
運(yùn)算符的結(jié)合性: C語言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左
至右)和右結(jié)合性(自右至左) 。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左
后右。如有表達(dá)式x-y+z,則先執(zhí)行x-y 運(yùn)算,然后再執(zhí)行+z 運(yùn)算。這是左結(jié)合性。
右結(jié)合性最典型的是賦值運(yùn)算符。如x=y=z.
3、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符
其一般形式為:
(類型說明符)(表達(dá)式)
其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。
例如:
(float) a
(int)(x+y)
4、自增、自減運(yùn)算符
++i 自增1 后再參與其他運(yùn)算。
--i 自減1 后再參與其他運(yùn)算。
i++ i 參與運(yùn)算后, i 的值再自增1.
i--參與運(yùn)算后, i 的值再自減1.
比較容易出錯的是i++,i--。因此應(yīng)仔細(xì)分析。
【例3】
#include <stdio.h>
int main (void)
{
int i = 8;
printf(" output = %d\n",++i);//output=9
printf(" output = %d\n",--i);//output=8
printf(" output = %d\n",i++);//output=8
printf(" output = %d\n",i--);//output=9
printf(" output = %d\n",-i++);//output=-8
printf(" output = %d\n",-i--);//output=-9
return 0;
}
【例4】
#include <stdio.h>
int main (void)
{
int i=8,j=8,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("p=%d,q=%d,i=%d,j=%d\n",p,q,i,j);
return 0;
}
這個程序中,對p=(i++)+(i++)+(i++)應(yīng)理解為三個i 相加,故為15.然后i 自增
1,三次故為i=11.對q 則不然,先自增1,再參與運(yùn)算, q=10+11+12=31。

評分

參與人數(shù) 5黑幣 +98 收起 理由
yoxi + 8
shuisheng60 + 35
就你**** + 10
shuisheng + 35
jinsheng7533967 + 10

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表