函数赋值给C中的变量

Ash*_*wat 3 c function

当变量声明为全局时,为什么以下代码返回错误.

int add(int x, int y) {
    return x+y;
}


int ab = add(10, 20);
int main(void) {

    printf("%d", ab);
}
Run Code Online (Sandbox Code Playgroud)

但如果我这样称呼:

int add(int x, int y) {
    return x+y;
}


int main(void) {
    int ab = add(10, 20);  // Variable declare inside main
    printf("%d", ab);
}
Run Code Online (Sandbox Code Playgroud)

然后它执行没有错误.

Som*_*ude 7

全局变量的初始值设定项必须是常量,它们不能是任意表达式.


ibi*_*tux 5

在C语言中,您无法在函数外部执行全局作用域中的代码,并将函数的返回值存储在全局变量中.

全局变量在初始化时必须保持不变,并且在您执行时:

x = func ( ... )
Run Code Online (Sandbox Code Playgroud)

函数的返回不是常数.