有效性检查/变量保护检查的if语句和if语句之间有什么区别?

时间:2013-10-20 12:32:18

标签: c if-statement

这不是一个直接的编码问题,没有涉及特定的代码。这是一个我一直在努力去理解的一般性问题。

if语句和有效性检查/变量保护检查的if语句有什么区别?

我问这个是因为我的导师告诉我们编写一个函数而不使用if语句(有效性检查/变量保护检查除外),我对它们之间的区别有点困惑。谢谢!

4 个答案:

答案 0 :(得分:2)

没有区别,只有一种if声明。条件取决于程序的结构,而不是if语句的特定“类型”。教师要求你不要引入不必要的if语句,除了检查一个“后卫”变量,所以可能有一个过程,你只需使用if来解决你的任务

答案 1 :(得分:1)

声明本身没有特别的区别,只是出于您使用该声明的目的。

如果你添加一个条件来查看输入参数是否对你的规范有效(比如,索引是非负的,并且在你的数组的范围内),那么你的教师说他会接受你的解决方案。另一方面,如果您使用条件来计算函数的输出,那么教师就不会认为您的解决方案是可接受的。

请注意,C提供了另一种确保参数有效性的方法 - 即assert功能。没有明确的if,但如果违反条件,程序将会中断:

void setArrayElementSafe(int *array, size_t size, size_t index, int newValue) {
    assert(index < size); // End the program if index is outside bounds
    array[index] = newValue;
}

一个简单的测试,看看你的程序是否可以接受,看看你是否可以用if替换所有assert s(你不必实际执行;只是仔细检查你的代码并确保它是可能的。

答案 2 :(得分:1)

我认为如果您可以从代码中删除所有if语句,并且只要您提供正确的输入,代码仍然可以正常运行,则表示您遵守教师规则。换句话说,您允许的唯一if语句是检查前置条件和假设的语句,但不是代码的算法逻辑的一部分。

答案 3 :(得分:0)

完全没有区别。 if语句是有效性检查。 if语句没有任何类型或类别。