C++If语句变量作用域
C++ If-statement variable scope
我有这个函数,当我运行它时,由于变量numer
的作用域,它给了我错误的答案。有没有一种方法可以为这个函数只使用一个返回语句。我不得不分开返回语句,这给了我正确的答案(您可以用//
看到(。
double calc_real_root(double a, double b, double c, double disc, double operation)
{
double denom=2*a;
double numer;
if (operation == ADD)
{
double numer = -b + sqrt(disc);
//return numer / denom ;
}
else
{
double numer = -b - sqrt(disc);
//return numer / denom ;
}
return numer / denom ;
}
您已经声明了名为numer
:的三个变量
- 初始值未初始化,在return语句中使用
if
机身中的else
机身中的
解决方案是从if
和else
体中去除double
。例如,
numer = -b + sqrt(disc);
问题是用同名的内部变量遮蔽外部的变量numer
。
参见:阴影变量
您可以从内部作用域为变量numer
赋值,而不是声明新的变量。
double calc_real_root(double a, double b, double c, double disc, double operation)
{
double denom=2*a;
double numer;
if (operation == ADD)
{
// Assign to `numer` without declaring new variable.
numer = -b + sqrt(disc);
}
else
{
numer = -b - sqrt(disc);
}
return numer / denom ;
}
相关文章:
- 在类函数中初始化外部作用域变量
- 不同作用域中的静态变量和全局变量
- 未在此作用域中声明的函数和变量 (C++)
- 如何在C++中访问作用域的变量输出?
- 不同块作用域中的 C++ 变量具有相同的地址
- "变量":函数中函数作用域不允许初始化的自动或寄存器变量'naked'
- Tictactoe 游戏变量未在作用域中声明
- C++If语句变量作用域
- 即使在离开作用域后,如何访问在堆上分配的变量C++?
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 局部变量的作用域是块或函数
- 当变量在多个函数作用域中使用时,我应该在类 private 中声明该变量吗?
- C++11 外部作用域变量声明为 auto
- 是一个初始化为未确定值或未初始化的本地作用域变量
- 命名空间作用域变量的c++初始化
- c++双删除文件作用域变量,链接问题
- 线程局部全局作用域变量
- 嵌套while循环中的作用域变量
- 如何从函数内部修改作用域变量
- c++中不一致的文件作用域变量行为