第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C語(yǔ)言中*s++ = *t++ 是怎么一種賦值過(guò)程

C語(yǔ)言中*s++ = *t++ 是怎么一種賦值過(guò)程

蝴蝶不菲 2019-04-16 20:27:47
如題K&R中的一個(gè)strcpy函數(shù)中出現(xiàn)的方式voidstrcpy(char*s,char*t){???while(*s++=*t++);}
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

首先是
*s=*t;
然后判斷整個(gè)表達(dá)式的值是否為真,即
*s!=0
滿足,則繼續(xù)循環(huán),否則終止
不論循環(huán)繼續(xù)與否,接下來(lái)要執(zhí)行
s+=1;t+=1;//s先自增還是t先自增在這里是無(wú)關(guān)緊要的
=================================
回答評(píng)論中補(bǔ)充的問(wèn)題,程序怎么讀
優(yōu)先級(jí)表我就不貼了,百度一大堆,核心是你要理解下面流程中的5.2
編譯器解析到*,判斷為指針運(yùn)算符號(hào),需要一個(gè)標(biāo)示符或者表達(dá)式
解析到s,是一個(gè)合法的標(biāo)示符,繼續(xù)搜索是否有更高優(yōu)先級(jí)的運(yùn)算符
繼續(xù)解析到++,由于*與++是同一優(yōu)先級(jí),結(jié)合性為右到左,所以等同于*(s++)
然后是=,判斷為賦值運(yùn)算符,優(yōu)先級(jí)比++低,因此前面的部分可以直接進(jìn)行計(jì)算
那么*(s++)怎么計(jì)算?
拆解成expr1=s++;expr2=*expr1;
首先是expr1=s++,后置++的含義是先使用變量/表達(dá)式的值、再自增,表達(dá)式s++的計(jì)算結(jié)果就是s的值,計(jì)算完畢后,s自增1,也就是說(shuō)假如s=1,那么s++這個(gè)表達(dá)式的計(jì)算結(jié)果就是1,expr1=1,計(jì)算完畢后,s的值自增1變?yōu)?,但不影響之前已經(jīng)計(jì)算完畢的表達(dá)式
然后計(jì)算expr2=*expr1,按照上面所舉的例子,此時(shí)s=2,expr2=*1
然后繼續(xù)=的計(jì)算,由于賦值運(yùn)算符是雙目運(yùn)算,需要一個(gè)右目表達(dá)式,繼續(xù)解析
后面*的優(yōu)先級(jí)比=高,因此先計(jì)算*t++,原理同上
然后計(jì)算賦值表達(dá)式的值,沒(méi)錯(cuò)!賦值表達(dá)式也是表達(dá)式,它也有計(jì)算結(jié)果,它的計(jì)算結(jié)果就是右邊表達(dá)式計(jì)算結(jié)果,表達(dá)式a=b的值就是b
計(jì)算完畢后,執(zhí)行while的功能,判斷表達(dá)式計(jì)算結(jié)果是否為真,也就是是否非0
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-16
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

voidv(char*s,char*t){
*s++=*t++;
}
看一下對(duì)應(yīng)指令
push%rbp
mov%rsp,%rbp
mov%rdi,-0x8(%rbp)//參數(shù)1s
mov%rsi,-0x10(%rbp)//參數(shù)2t
mov-0x10(%rbp),%rax//t暫存%rax
movzbl(%rax),%edx//*t放入%edx
mov-0x8(%rbp),%rax//s暫存%rax
mov%dl,(%rax)//*t的低8位,即一個(gè)字節(jié),放入*s
addq$0x1,-0x8(%rbp)//s++
addq$0x1,-0x10(%rbp)//t++
leaveq
retq
可以看到,先*s=*t,然后s和t各自加1
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-16
  • 2 回答
  • 0 關(guān)注
  • 476 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)