運(yùn)算與對(duì)象操作(二):算術(shù)表達(dá)式

前言:OC語言是C語言的基礎(chǔ)上發(fā)展起來的,所以沿用了C語言的運(yùn)算規(guī)則那伐。OC語言的運(yùn)算符不僅具有不同的優(yōu)先級(jí)踏施,而且還有一個(gè)特點(diǎn)石蔗,就是它的結(jié)合性。在表達(dá)式中畅形,各運(yùn)算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定养距,還要受運(yùn)算符結(jié)合性的制約,以便確定是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算日熬。這種結(jié)合性是其它高級(jí)語言的運(yùn)算符所沒有的棍厌,因此也增加了OC語言的復(fù)雜性。

1.算術(shù)運(yùn)算符

算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來的竖席、符合C語法規(guī)則的式子耘纱。

算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算。包括加(+)毕荐、減(-)束析、乘(*)、除(/)憎亚、求余(或稱模運(yùn)算员寇,%)、自增(++)第美、自減(–)共七種丁恭。

運(yùn)算符的優(yōu)先級(jí):C語言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)斋日。1級(jí)最高牲览,15級(jí)最低。在表達(dá)式中恶守,優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算第献。而在一個(gè)運(yùn)算量兩側(cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理兔港。

運(yùn)算符的結(jié)合性:C語言中各運(yùn)算符的結(jié)合性分為兩種庸毫,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右衫樊,即先左后右飒赃。如有表達(dá)式x-y+z則y應(yīng)先與“-”號(hào)結(jié)合,執(zhí)行x-y運(yùn)算科侈,然后再執(zhí)行+z的運(yùn)算载佳。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”臀栈。 最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符蔫慧。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算权薯。C語言運(yùn)算符中有不少為右結(jié)合性姑躲,應(yīng)注意區(qū)別睡扬,以避免理解錯(cuò)誤。

加法運(yùn)算符”+“:加法運(yùn)算符為雙目運(yùn)算符黍析,即應(yīng)有兩個(gè)量參與加法運(yùn)算卖怜。如a+b,4+8等。具有左結(jié)合性阐枣。

減法運(yùn)算符”-“:減法運(yùn)算符為雙目運(yùn)算符马靠。但“-”也可作負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算侮繁,如-x,-5等。具有左結(jié)合性如孝。

乘法運(yùn)算符”*“:雙目運(yùn)算宪哩,具有左結(jié)合性。

除法運(yùn)算符”/“:雙目運(yùn)算第晰,具有左結(jié)合性锁孟。

注意:參與運(yùn)算量均為整型時(shí),運(yùn)算結(jié)果也為整型茁瘦,舍去小數(shù)品抽。如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型甜熔。

求余運(yùn)算符(模運(yùn)算符)”%“:雙目運(yùn)算圆恤,具有左結(jié)合性。要求參與運(yùn)算的量均為整型腔稀。 求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)盆昙。

自增、自減運(yùn)算符:自增1運(yùn)算符記為”++“焊虏,其功能是使變量的值自增1淡喜。自減1運(yùn)算符記為”- -“,其功能是使變量值自減1诵闭。自增1炼团,自減1運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性疏尿∥林ィ可有以下幾種形式:

++i;//i自增1后再參與其它運(yùn)算。

--i;//i自減1后再參與其它運(yùn)算褥琐。

i++;//i參與運(yùn)算后模狭,i的值再自增1。

i--;//i參與運(yùn)算后踩衩,i的值再自減1嚼鹉。

注意:在理解和使用上容易出錯(cuò)的是i++和i- -贩汉。 特別是當(dāng)它們出在較復(fù)雜的表達(dá)式或語句中時(shí),常常難于弄清锚赤,因此應(yīng)仔細(xì)分析匹舞。不提倡自增運(yùn)算符和自減運(yùn)算符與其他運(yùn)算符混用,尤其不要出現(xiàn)下面這樣的代碼:

//嚴(yán)禁出現(xiàn)下面風(fēng)格的代碼

inti=1,j=1,p,q;

p=(i++)+(i++)+(i++);

q=(++j)+(++j)+(++j);

printf("%d,%d,%d,%d",p,q,i,j);

這在C標(biāo)準(zhǔn)里线脚,叫做未定義行為赐稽,一切未定義行為的執(zhí)行后果都是不可知的,編譯器不會(huì)報(bào)錯(cuò)浑侥,但是會(huì)報(bào)警告姊舵。

2.數(shù)據(jù)類型轉(zhuǎn)換

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

其一般形式為:?(類型說明符)? (表達(dá)式)

其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。

例如:

(float) ? ?a????? 把變量a轉(zhuǎn)換為浮點(diǎn)型

(int)(x + y)???? 把x+y的結(jié)果轉(zhuǎn)換為整型

強(qiáng)制類型轉(zhuǎn)換運(yùn)算符是一元運(yùn)算符寓落,行為和其他一元運(yùn)算符一樣括丁,并不會(huì)對(duì)變量本身的值造成改變,就像-a永遠(yuǎn)不會(huì)影響a的值伶选,因此史飞,(float) ?a也不會(huì)影響a的值。

隱式類型轉(zhuǎn)換:

浮點(diǎn)值賦給整型變量:數(shù)值的小數(shù)部分會(huì)被刪節(jié)仰税,整數(shù)部分不變构资。

整型值賦給浮點(diǎn)型變量:數(shù)值大小不發(fā)生變化,數(shù)據(jù)類型變成浮點(diǎn)型陨簇。

3.示例代碼

#import

intmain(intargc,constchar*argv[]){

@autoreleasepool{

inta=10,b=4;

floatc=2.0,d=1.5;

// 打印a, b, c, d的值

NSLog(@"a = %d, b = %d, c = %f, d = %f",a,b,c,d);

// 加法

NSLog(@"a + b = %d",a+b);

// 減法

NSLog(@"a - b = %d",a-b);

// 乘法

NSLog(@"a * b = %d",a*b);

// 除法

NSLog(@"a / b = %d",a/b);// 兩個(gè)整型相除吐绵,結(jié)果也為整型,小數(shù)部分舍去

NSLog(@"a / c = %f",a/c);// 參與運(yùn)算的量有浮點(diǎn)型時(shí)河绽,運(yùn)算結(jié)果也為浮點(diǎn)型

// 模運(yùn)算(取余)

NSLog(@"a %% b = %d",a%b);// NSLog中 %% 表示打印一個(gè) %拦赠,模運(yùn)算要求左右兩邊均為整型

// 自增(自減類似)

NSLog(@"a++ = %d",a++);// 先取值,后加1

NSLog(@"++b = %d",++b);// 先加1葵姥,后取值

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

NSLog(@"(float)(a + b) = %f",(float)(a+b));// 數(shù)值大小不發(fā)生變化荷鼠,數(shù)據(jù)類型變成浮點(diǎn)型。

NSLog(@"(int)(c + d) = %d",(int)(c+d));// 數(shù)值的小數(shù)部分會(huì)被刪節(jié)榔幸,整數(shù)部分不變允乐。

// 打印a, b, c, d的值

NSLog(@"a = %d, b = %d, c = %f, d = %f",a,b,c,d);

// 隱式類型轉(zhuǎn)換

intintResult;

intResult=d;// 將float類型的變量賦給int型變量,數(shù)值的小數(shù)部分會(huì)被刪節(jié)削咆。

NSLog(@"(intResult = d) --> intResult = %d",intResult);

floatfloatResult;

floatResult=a;// 將int型變量賦給float型變量牍疏,數(shù)值大小不發(fā)生變化,數(shù)據(jù)類型變成浮點(diǎn)型拨齐。

NSLog(@"(floatResult = a) --> floatResult = %f",floatResult);

}

return0;

}

運(yùn)行結(jié)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鳞陨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瞻惋,更是在濱河造成了極大的恐慌厦滤,老刑警劉巖援岩,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掏导,居然都是意外死亡享怀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門趟咆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來添瓷,“玉大人,你說我怎么就攤上這事值纱×鄞” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵虐唠,是天一觀的道長搀愧。 經(jīng)常有香客問我,道長凿滤,這世上最難降的妖魔是什么妈橄? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任庶近,我火速辦了婚禮翁脆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鼻种。我一直安慰自己反番,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布叉钥。 她就那樣靜靜地躺著罢缸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪投队。 梳的紋絲不亂的頭發(fā)上枫疆,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音敷鸦,去河邊找鬼息楔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扒披,可吹牛的內(nèi)容都是我干的值依。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碟案,長吁一口氣:“原來是場噩夢啊……” “哼愿险!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起价说,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤辆亏,失蹤者是張志新(化名)和其女友劉穎风秤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褒链,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唁情,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甫匹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甸鸟。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兵迅,靈堂內(nèi)的尸體忽然破棺而出抢韭,到底是詐尸還是另有隱情,我是刑警寧澤恍箭,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布刻恭,位于F島的核電站,受9級(jí)特大地震影響扯夭,放射性物質(zhì)發(fā)生泄漏鳍贾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一交洗、第九天 我趴在偏房一處隱蔽的房頂上張望骑科。 院中可真熱鬧,春花似錦构拳、人聲如沸咆爽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斗埂。三九已至,卻和暖如春凫海,著一層夾襖步出監(jiān)牢的瞬間呛凶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工行贪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漾稀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓瓮顽,卻偏偏與公主長得像县好,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暖混,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 01-常量與變量 學(xué)習(xí)swift第一步打印Hello World print("Hello World") swi...
    iOS_恒仔閱讀 5,149評(píng)論 2 19
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型缕贡。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,444評(píng)論 3 44
  • ?1 C語言程序的結(jié)構(gòu)認(rèn)識(shí) 用一個(gè)簡單的c程序例子晾咪,介紹c語言的基本構(gòu)成收擦、格式、以及良好的書寫風(fēng)格谍倦,使讀者對(duì)c語...
    CONLYOUC閱讀 8,704評(píng)論 9 66
  • 生活的柴米油鹽塞赂,終究會(huì)有一天會(huì)被我熬成詩歌與遠(yuǎn)方的雞湯。
    青心爭己閱讀 75評(píng)論 0 0