Default return value of a function in BASIC
下面是BASIC中的一个示例程序。如果标记的条件不是真的,有人能告诉我这个函数返回什么吗?我必须把程序移植到C++,需要了解它。我没有基本知识-请接受简单的问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | FUNCTION CheckPoss (u) tot = tot + 1 f = 0 SELECT CASE u CASE 2 f = f + CheckIntersection(1, 3, 2, 1) 'A CASE 3 f = f + CheckIntersection(2, 3, 3, 1) 'B END SELECT IF f = 0 THEN <============== This condition if true, CheckPoss = 1 <============== then return value is 1 IF u = 9 THEN PrintSolution END IF END IF END FUNCTION |
这是一个坏编程的好例子。首先,此函数中的某些未知全局变量发生了更改。"TOT=TOT+1"!第二行"f"是另一个未知的全局变量,被赋值为"0"。或者这是唯一使用这个变量的地方?在这种情况下,它是在此处隐式声明的变量。用暗号申报。这样做基本上是合法的。全局变量应作为参数传递给如下函数:
dim f as integer
f=0
这都是关于良好实践的,因此输入是清晰的,输出是清晰的,所有变量赋值都应该通过传递给函数的参数进行。返回类型也未声明。这是Visual Basic吗?或者它是一些老的基础设施?无论如何,返回类型是VisualBasic的变体。旧的basic将是整数类型。
如果不满足条件,此函数的输出很可能为零!这在代码中也应该是清楚的,但它并不是很清楚,我理解你为什么要问。我很惊讶这段代码来自一个有效的程序。
祝你的项目好运!
我不太清楚这个函数的作用。
在vb.net上,函数遵循以下结构:
Public function CheckPoss(Byval u as integer)
... ' Just commands
return u ' Or other variable
end function
如果"return"命令不存在,则函数的返回将是"null"字符。
在C上,函数为:
int CheckPoss(int u){
tot++; // Increment tot variable (need be declared)
int f = 0;
switch(u){
case 2:
f += CheckIntersection(1, 3, 2, 1); // A
break;
case 3:
f += CheckIntersection(2, 3, 3, 1); // B
break;
}
if (f == 0){
if (u == 9){
PrintSolution();
}
return 1;
}
}
RETURN命令需要是该函数的最后一个命令。以F为例!=0,函数必须返回垃圾桶(某些值或字符)。
我的建议是:
int CheckPoss(int u){
tot++; // I think that this must count how times you call this function
int f;
if(u == 2){
f = CheckIntersection(1, 3, 2, 1); // A
}else if(u == 3){
f = CheckIntersection(2, 3, 3, 1); // B
}else{
f = 1; // Case else
}
if (f == 0){
if (u == 9)
PrintSolution();
return 1;
}
}