所以我对某事感到好奇。我有两个功能,都按照我想要的方式工作,它们如下:
//this function returns the absolute value of a number
int abs(int y) {
if (y < 0) {
return -1 * y;
}
return y;
}
//gives a random number, multiplied by x, in the range 1-y
int randomNum(int x, int y) {
srand((int)time(0));
return abs(x * rand() % y) + 1;
}
他们都工作,所以他们的功能不是问题。但是如果你注意到,他们都使用了一个名为“int y。”的参数。
我的问题是,尽管这两个功能都有效,但是这种不好的做法可能会让我在更复杂的程序中搞砸了吗?或者无关紧要,因为变量是各自功能的本地变量?
我的意思是,如果我将其中一个“int y”参数更改为其他内容显然没什么大不了的,我只是很好奇,就是这样。
答案 0 :(得分:2)
我认为简单的程序是可以的。
但是,您应该使用与您相同的谨慎来命名变量 说出生第一个孩子。
Robert C. Martin,清洁代码:敏捷软件工艺手册
例如,没有人愿意阅读声明int foo(int x, int y, int z, int xx, int bb, int cc .....)
答案 1 :(得分:0)
每当大括号{ }
内有变量时,它就是作用域的本地变量。一旦离开braces
,它就会死亡。
现在你要问的代码,
// y is declared in abs and is alive only in the abs
int abs(int y) {
if (y < 0) {
return -1 * y;
}
return y;
}
// the previous y dies here and is inaccessible.
// a new instance of y is created in randomNum and it's valid till the brace ends
int randomNum(int x, int y) {
srand((int)time(0));
return abs(x * rand() % y) + 1;
}
现在按照Jawad Le Wywadi
int main()
{
int a = 0;
++a;
{
int a = 1;
a = 42;
cout << a;
}
cout << a;
}
亲自尝试,让我们知道您在评论中意识到了什么。