我看的这一节是1.5, 主题是Magic Numbers, 大致意思是尽量不要在代码中使用含义不明的数字, 应该要给他们取个名字; define numbers as constants, not macros;
那么问题来了:
Exercise 1-10. How would you rewrite these definitions to minimize opotential errors? #define FT2METER 0.3048 #define MI2FT 5280.0 ...
在C++中可以用const定义, 在Java中可以用final float定义, 在C中, enum只能用于整数,define又是不被推荐的, 那么有别的方法吗?
ps: 1.5节中有一句话我没看懂, 不知道大家可以给我讲讲么:(白乔 注解版Page 27, 中间一段)It may not be worth inventing a name for the size of a local array, but it is definitely worth writing code that does not have to change if the size or type changes.
![]() | 1 saber000 2015-01-05 01:54:05 +08:00 double FT2METER = 0.3048; // 敢改切JJ double MI2FT = 5280.0; // 改了捅菊花 |
![]() | 2 herozem OP @saber000 不对吧, 首先,用enum和const定义常量的目的是让存储常量值的变量不能被重新肤质赋值;因为是double类型, 所以enum不可取, 后来我验证了一下, c89中是有const关键字的;-), 所以这个题应该是用const定义这些个常量 |
![]() | 3 scenix 2015-01-05 10:28:43 +08:00 const |
![]() | 4 canautumn 2015-01-05 11:34:36 +08:00 最后一句应该是说,如果只是为了给本地数组大小的数字起个名字,这么做不太值得;但是如果是考虑到当数组大小数值或类型改变时,不需要修改代码(仅需改变常量定义的值),那这么做就是值得的。 |