亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如果c已經有了值還需要調用一次getch嗎?

如果c已經有了值還需要調用一次getch嗎?

C PHP
一只甜甜圈 2022-07-26 19:15:58
#include <ctype.h>int getch(void);void ungetch(int);/*getop函數:獲取下一個運算數或數值操作數*/int getop(char s[]){int i,c;while((s[0]=c=getch())==' '||c=='\t');s[1]='\0';if(!isdigit(c) && c!='.') /*收集整數部分*/return c;i=0;if(isdigit(c))/*收集小數部分*/while(isdigit(s[++i]=c=getch()));if(c=='.')while(isdigit(s[++i]=c=getch()));s[i]='\0';if(c!=EOF)ungetch(c);return NUMBER;}當 if(isdigit(c))這個條件為真的時候,執行下面的循環語句,但是這個時候c中存放的就是一個數字了。是先付給數組呢?還是要再調用一次這個getch呢啊?我也弄不明白是怎么個執行順序才可以先收集整數部分,在收集小數部分,而且小數點事在那個循環語句當中放到數組當中的呢?求高手給指點。
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

先調用getch,賦值運算符是又結合的所以c是和右邊的賦值運算符結合,s[++i]=c=getch()等價于s[++i]=(c=getch()),所以上面是先計算s[++i]=的右邊部分,即(c=getch()), 這個右邊部分又包含賦值表達式,所以先計算該賦值運算符的右邊部分即getch()。所以整個復合表達式的計算順序是先計算getch(),再將返回值賦給c,再將c的值賦給s[++i]。

查看完整回答
反對 回復 2022-08-01
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

你代碼太亂了,重發下,按寫代碼那樣的形式,這樣完全就沒法看。
還有就是說明白這個程序時干什么的,寫好注釋。

查看完整回答
反對 回復 2022-08-01
  • 2 回答
  • 0 關注
  • 215 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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