对于一般的函数,测试输入数据的时候,要从两个角度来判断数据是否合法。
一是数据类型,如要求的参数是整形,就不能输入浮点型,要求的是双精度,最后就不要是float类型,要求的是无符号,最好就不要带符号。
二是数据范围,如要求是非负数,要求是素数。
我感觉一般而言,是将数据类型的测试放在输入之后进行,而对于数据范围的测试再放到需要用到数据的函数内部进行,比较不容易混乱。
例如要实现判断是否为三角形的函数,输入参数设定为三个整形,在判断是否能构成三角形之前首先要进行数据的合法性测试。
如果想要在函数内部进行数据的类型测试就很难,因为如果传递的是三个float型的实参,在函数调用的时候已经被隐式转换成了int类型,所以如果再函数运行的时候输入的是float类型的参数,就无法判断出错误来。
(在函数内部测试数据的类型的一种方法:可以将函数的形参设为字符串类型,传入保存有原始数据的字符串,然后遍历字符串检测是否符合数据类型的要求
如要判断是否为float类型,可以遍历传入的字符串数组,若数组的所有元素都是数字且小数点只出现了一次,且
)
所以数据类型测试放在函数体外,在调用函数的时候确保实参和形参的类型一定要是相同的!