我可以重新初始化全局变量以覆盖其在C中的值吗?

戴维·普伦

有人知道为什么我的程序在以下情况下会打印-69吗?我希望它能以C语言打印未初始化的原始数据类型的默认值/垃圾值。谢谢。

#include<stdio.h>

int a = 0; //global I get it
void doesSomething(){
   int a ; //I override global declaration to test.
   printf("I am int a : %d\n", a); //but I am aware this is not.
    a = -69; //why the function call on 2nd time prints -69?
}

int main(){
  a = 99; //I re-assign a from 0 -> 99
  doesSomething(); // I expect it to print random value of int a
  doesSomething(); // expect it to print random value, but prints -69 , why??
  int uninitialized_variable;
  printf("The uninitialized integer value is %d\n", uninitialized_variable);
}
一些程序员哥们

您所拥有的是未定义行为,您无法预先预测未定义行为的行为。

但是,这种情况很容易理解。函数中的局部变量a位于doesSomething堆栈上的特定位置,并且该位置在两次调用之间不会改变。因此,您所看到的是先前的值。

如果您在两者之间打电话给其他人,您会得到不同的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python中的多进程会重新初始化全局变量吗?

来自分类Dev

C 头文件中的全局变量初始化

来自分类Dev

用C中的整数广播全局变量指针初始化全局变量

来自分类Dev

可以使用C ++ 17内联成员强制跨TU的全局变量的初始化顺序吗?

来自分类Dev

重新初始化已经在其他源文件中定义的全局变量

来自分类Dev

Coverity 会在嵌入式 C 中将全局变量视为 0 初始化吗?

来自分类Dev

JUnit:是否可以模拟在全局变量的初始化中调用的静态方法?

来自分类Dev

JavaScript:在函数中初始化全局变量

来自分类Dev

C ++全局变量初始化顺序

来自分类Dev

在C ++中使用全局变量初始化

来自分类Dev

为什么我的全局变量没有在Test :: Class中初始化?

来自分类Dev

在python的构造函数中初始化全局变量后如何保留它的值?

来自分类Dev

初始化 cuda 全局变量

来自分类Dev

如何初始化全局变量

来自分类Dev

进行全局变量初始化

来自分类Dev

初始化全局变量.Net

来自分类Dev

C中的全局变量链表队列?(初始化元素不是常数)

来自分类Dev

Python:无法从初始化文件导入在setUp方法中初始化的全局变量

来自分类Dev

Go的链接器可以覆盖初始化的变量吗

来自分类Dev

批处理在循环内重新初始化全局变量,并在循环外使用

来自分类Dev

可以抛出调用,但是不能从全局变量初始化程序中抛出错误

来自分类Dev

我可以重新初始化sklearn库吗

来自分类Dev

成员变量可以访问同一初始化列表(C ++)中先前定义的成员变量的值吗?

来自分类Dev

为什么可以使用内联汇编代码的结果初始化全局变量?

来自分类Dev

为什么C和C ++编译器将显式初始化和默认初始化的全局变量放在不同的段中?

来自分类Dev

如果我不使用它,在分配值之前,不要在C中初始化局部变量可以吗?

来自分类Dev

在 C++ 中,用自身初始化全局变量是否具有未定义的行为?

来自分类Linux

Tensorflow服务器:我不想为每个会话初始化全局变量

来自分类Dev

LLVM,初始化值为0的整数全局变量

Related 相关文章

  1. 1

    python中的多进程会重新初始化全局变量吗?

  2. 2

    C 头文件中的全局变量初始化

  3. 3

    用C中的整数广播全局变量指针初始化全局变量

  4. 4

    可以使用C ++ 17内联成员强制跨TU的全局变量的初始化顺序吗?

  5. 5

    重新初始化已经在其他源文件中定义的全局变量

  6. 6

    Coverity 会在嵌入式 C 中将全局变量视为 0 初始化吗?

  7. 7

    JUnit:是否可以模拟在全局变量的初始化中调用的静态方法?

  8. 8

    JavaScript:在函数中初始化全局变量

  9. 9

    C ++全局变量初始化顺序

  10. 10

    在C ++中使用全局变量初始化

  11. 11

    为什么我的全局变量没有在Test :: Class中初始化?

  12. 12

    在python的构造函数中初始化全局变量后如何保留它的值?

  13. 13

    初始化 cuda 全局变量

  14. 14

    如何初始化全局变量

  15. 15

    进行全局变量初始化

  16. 16

    初始化全局变量.Net

  17. 17

    C中的全局变量链表队列?(初始化元素不是常数)

  18. 18

    Python:无法从初始化文件导入在setUp方法中初始化的全局变量

  19. 19

    Go的链接器可以覆盖初始化的变量吗

  20. 20

    批处理在循环内重新初始化全局变量,并在循环外使用

  21. 21

    可以抛出调用,但是不能从全局变量初始化程序中抛出错误

  22. 22

    我可以重新初始化sklearn库吗

  23. 23

    成员变量可以访问同一初始化列表(C ++)中先前定义的成员变量的值吗?

  24. 24

    为什么可以使用内联汇编代码的结果初始化全局变量?

  25. 25

    为什么C和C ++编译器将显式初始化和默认初始化的全局变量放在不同的段中?

  26. 26

    如果我不使用它,在分配值之前,不要在C中初始化局部变量可以吗?

  27. 27

    在 C++ 中,用自身初始化全局变量是否具有未定义的行为?

  28. 28

    Tensorflow服务器:我不想为每个会话初始化全局变量

  29. 29

    LLVM,初始化值为0的整数全局变量

热门标签

归档