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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言\0與0的區(qū)別 以及while的判斷

C語言\0與0的區(qū)別 以及while的判斷

翻閱古今 2019-04-16 20:27:29
while("\0")為什么會跳出以下的while為什么又會跳出呢,因為以前是寫PHP的不太理解,賦值不是一直會為真的嗎?請輸入代碼/*strcpy:將t復制到s;指針版3*/voidstrcpy(char*s,char*t){???while(*s++=*t++)?????;}
查看完整描述

2 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

這個while判斷的是*s++=*t++表達式的值
對,沒錯,C語言里的表達式也是有值的,比如逗號表達式的值1,2,3的值等于最右邊數的值即3
這個賦值表達式的值也是等于賦值完后的左值即*s++,也即當前*s的值
所以當t到達末尾的時候會讀到字符串結尾的0,即*t為0,被賦值的*s也是0,while里面是個0自然會跳出循環(huán)
另外'\0'的值為0,所以while('\0')會跳出循環(huán)
另外while("\0")不會跳出循環(huán),因為字符串常量的值實際山是它的地址,字符串常量的地址都不會是0
                            
查看完整回答
反對 回復 2019-04-16
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

while("\0")
這條語句判斷的是"\0"的值,在C里面也就是"\0"的地址,這個條件會造成死循環(huán),除非"\0"的地址為0,在MINGW32環(huán)境下測試如此
while(*s++=*t++);
這條語句判斷的是賦值表達式的返回值,C里面賦值表達式返回的是左操作數的值,t和s是正確的字符串的情況下,最后一步會有*s='\0';發(fā)生,這時候ASCII'\0'的值為0,循環(huán)退出
                            
查看完整回答
反對 回復 2019-04-16
  • 2 回答
  • 0 關注
  • 1118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號