gpt4 book ai didi

c - 覆盖变量实际上是如何工作的?

转载 作者:太空狗 更新时间:2023-10-29 14:49:12 27 4
gpt4 key购买 nike

我的老师给了我一些代码并问我打印了什么,但它在某些情况下包含覆盖变量,而在其他情况下则不包含,这真的很令人困惑。

#include <stdio.h>
int w, x, y, z = 10;

void f(int y){
w += 5;
x += 6;
y += 7;
}

int main(void) {
int w;
w = x = y = z = 1;

f(z);

printf ("%d %d %d %d\n", w, x, y, z);

return 0;
}

我原以为 f(z) 函数会转到 void f 并将 w 增加 5,x 为 6,y 为 7,z 将保持为 1,因为所有全局变量都在 main 函数中被覆盖。

虽然结果是 1 7 1 1

最佳答案

全局范围内的w自动初始化为0。

main 中的automatic 变量 shadow main 中的全局变量.

f 中的参数 y 阴影 全局 y

(请注意我在这里谨慎使用术语;阴影 是正确的术语 - 覆盖 用于描述多态编程中一个函数对另一个函数的替换。)

关于c - 覆盖变量实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415571/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com