C++ 使用将变量作为参数的函数初始化变量

C++ 使用将变量作为参数的函数初始化变量,c++,C++,我最近在查看一些代码时,遇到了一些让我感到困惑的问题。假设我有一个函数,intgetnewnumber(intnum,intdir),实现如下: int getNewNumber(int num, int dir) { int newNum = num; if(dir == 1) { newNum++; } else { newNum--; } return newNum; } int number = getNewNum

我最近在查看一些代码时,遇到了一些让我感到困惑的问题。假设我有一个函数,
intgetnewnumber(intnum,intdir)
,实现如下:

int getNewNumber(int num, int dir) {
    int newNum = num;
    if(dir == 1) {
        newNum++;
    } else {
        newNum--;
    }
    return newNum;
}
int number = getNewNumber(number, 1);
现在,当调用函数时,我有如下内容:

int getNewNumber(int num, int dir) {
    int newNum = num;
    if(dir == 1) {
        newNum++;
    } else {
        newNum--;
    }
    return newNum;
}
int number = getNewNumber(number, 1);
在传递到newNum之前是否将其初始化为0?我不知道在初始化变量时如何使用它作为参数

在传递到newNum之前是否将其初始化为0

也许吧。这取决于上下文。如果变量是全局静态变量,则在动态初始化之前,该变量初始化为零

如果它是一个自动变量,那么传递到
getNewNumber
的值是不确定的,并且使用该值具有未定义的行为。一个体面的编译器会警告你

我不知道在初始化变量时如何使用它作为参数

如果变量不是静态初始化的,那么就不能以定义行为的方式在其自身初始化中使用其值


如果变量在动态初始化之前初始化为零,则可以使用该值,但也可以使用文字零,这对程序的读者来说会更清楚。我认为没有任何有用的方法可以在变量自身的初始化中使用变量的值。

我真的认为这取决于编译器。一般来说,我称之为不安全-在最好的情况下,您将得到一个a值,该值具有相同的类型,或者可以转换为这种类型。在最坏的情况下,程序会简单崩溃。< /P>是否存在另一个在外部范围内具有相同名称的变量?该代码不应该编译为C++代码——函数需要返回类型。您正在读取未初始化的变量,至少是未指定的行为。@ NWP在C++中未定义。@ JuangopANZA是用C定义的吗?该文件是一个.cpp文件,但它是在嵌入式系统上实现的,所以我认为它实际上是C代码。我可能给它贴错了标签。