用以将该变量作为参数的函数初始化变量
Initializing a variable with a function that takes that variable as an argument
我最近正在审查一些代码,我遇到了一些我感到困惑的东西。说我有一个函数, int getNewNumber(int num, int dir)
,如这样:
int getNewNumber(int num, int dir) {
int newNum = num;
if(dir == 1) {
newNum++;
} else {
newNum--;
}
return newNum;
}
现在,当调用函数时,我有类似的东西:
int number = getNewNumber(number, 1);
在传入纽纳姆之前,它是初始化为0吗?我对如何将变量用作参数进行初始化时感到困惑。
在传入newnum之前,它是初始化为0吗?
也许。这取决于上下文。如果变量是全局静态,则在动态初始化之前初始初始化。
如果它是自动变量,则传递到getNewNumber
的值是不确定的,并且使用该值的行为不确定。一个体面的编译器会警告您。
我对如何在初始化变量时将其用作参数感到困惑。
如果该变量未静态初始化,则您不能以其自身的初始化的方式使用它的定义行为。
如果变量在动态初始化之前初始初始化为零,则可以使用该值,但是您最好使用字面的零,并且对于程序的读者来说,这将更清楚。我认为没有任何有用的方法可以在其自身的初始化中使用变量的值。
我真的认为这取决于编译器。总的来说,我称之为不安全 - 在最好的情况下,您会得到一个具有相同类型的值,或者可以转换为此类。在最坏的情况下 - 程序将简单地崩溃。
相关文章:
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 带有整数的变量参数列表
- 转发变量参数列表以模拟 std::thread
- 存储稍后要转发的变量参数
- 包括一个类来定义全局变量参数 c++ :(
- 可变参数模板类的构造函数无法接受变量参数
- 变量参数列表 后面的'const std::string&'弄乱了堆栈
- 变量参数崩溃的 C 函数
- 如何使用变量参数化类型?C++
- 使用参数包分配具有变量参数的函数指针
- 参考变量参数与本地参考变量
- 如何以相同的方法在子类中超载的相同方法来实现工作变量参数方法
- 如何基于模板变量参数多次扩展语句
- gmock一种接受变量参数的方法
- 使用变量参数列表与向量(C )的原因
- lambda 中的变量参数作为函数指针
- C 变量参数错误
- 带有变量参数列表的c++11 lambda函数
- 变量参数
- std::函数带有C变量参数,而不是模板变量参数