案例3:通过税前工资计算税后工资
beSal<=5000 不收税
5000<beSal<=8000 收3%税
8000<beSal<=10000 收5税
beSal>=10000 收10%税
beSal=6000
(beSal-5000)*0.03
beSal=9000
(beSal-8000)*0.05 (8000-5000)*0.03
beSal=12000
(beSal-10000)*0.1 (10000-8000)*0.05 (8000-5000)*0.03
多年之后,税率有可能改变,但是逐个改变代码过于麻烦,可以直接用define宏定义
在前面的宏定义中都很顺利,字符都替换成功
但是当尝试宏定义嵌套宏定义时出现了错误
显示没有找到str(SECOND-FIRST)*RATE1,但是此字符串是确实存在的。
后来尝试了前半段替换 (SECOND-FIRST)——>FEE1,替换成功。
所以感觉问题应该是出在*上面
那准确的来说SECOND-FIRST是一个str,那么str*ch还是一个str吗?
如果(SECOND-FIRST)*RATE1 更应该算一个算术式而不是字符串,自然就不适用于define的替换规则。
在网上查找错误的过程中,参看了以下链接Linux下的vi编辑命令中查找·替换详解
在目前还没有学习到具体给以上式子定义的前提下,我在代码行中手动更换了FEE1,FEE2,运行结果成功,和define替换前一样。
后续:问了老师确实说是因为*的缘故,这条指令只适用于字符串
自己的理解就是代码中的*是一个运算符号,但是在底行模式里面*是一个字符,两者含义不一样,所以无法找到。
ps:上一次博客有人回复:CS入门 技能树或许可以帮到你:CS入门技能树
里面是一些linux入门的习题,可以帮助加深印象,很有用。感谢CSDN的网友。