为了账号安全,请及时绑定邮箱和手机立即绑定

如果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 关注
  • 187 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号