2

This isn't a straight up coding question, there's no specific code involved. It's more of a general question that I've been struggling with to understand.

What is the difference between an if statement, and an if statement for validity check/variable guard check?

I ask this because my instructor told us to write a function without using if statements(except for validity check/variable guard check) and I'm a little confused on the difference between them. Thanks!

4

4 回答 4

2

没有区别,只有一种if说法。条件取决于程序的结构,而不是特定的“类型”if语句。讲师要求您不要引入不必要if的语句,除非检查“保护”变量,因此大概有一个过程,您可以仅使用if.

于 2013-10-20T12:33:57.533 回答
1

我认为这意味着如果您可以if从代码中删除所有语句并且代码仍然可以正常工作,只要您提供正确的输入,您就遵守了您的讲师规则。换句话说,if您被允许的唯一语句是检查先决条件和假设的语句,但不是代码算法逻辑的一部分。

于 2013-10-20T12:45:33.417 回答
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;
}

一个简单的测试来看看你的程序是否可以接受,看看你是否可以用 s 替换它的所有ifs assert(你不必实际这样做;只需检查你的代码并确保它是可能的)。

于 2013-10-20T12:35:46.310 回答
0

完全没有区别。if语句旨在进行有效性检查。if语句没有任何类型或类。

于 2013-10-20T12:34:45.350 回答