我正在运行一个简单的代码来测试我的理解,如下所示。 我从中获得的输出实际上是10。 我认为输出应该给我一个编译错误,因为“b”不能添加到x,因为x是一个const变量。 有人可以帮助澄清我对此的理解吗?
int aFunction(const int x){
return (x+10);
}
int main(){
int b =0;
b = aFunction(b);
printf("%d\n",b);
return 0;
}
答案 0 :(得分:4)
这一行
return (x+10);
不向x
添加10并将其返回。它形成x+10
的值并返回该值但保持x
本身不变。
如果你写了
int c;
c=x+10;
在第二行执行后,你会期望x增加10吗?
尝试
int aFunction(const int x){
int c=(x+10);
printf("aFunction: x=%d c=%d\n",x,c);
return c;
}
答案 1 :(得分:3)
基本上,将const限定符应用于变量可防止修改变量的值。 在函数aFunction()中,变量x被赋予一个const限定符,它可以防止在函数中修改x的值。没有理由为什么你的代码不能编译,因为所有函数正在做的是返回一个比x多10的值。它不会以任何方式修改x的值。
如果你做了x + = 10这是x = x + 10的缩写,那么你会遇到一些编译错误。
答案 2 :(得分:1)
const int x
仅表示x
本身无法在函数内部更改。它与返回值无关。
答案 3 :(得分:1)
<强> 简单: 强> 除非您重新初始化x,否则不会更改x,请查看以下几行:
const int x :表示X永远不会被更改。
x + 10 :表示只需在X中添加10但不保存状态。
x = x +10“表示会覆盖将崩溃的x值:您将获得所需的错误