如果我在另一个文件中声明了另一个具有相同名称的变量会怎样?

瓦格达的军队

int x文件1中声明一个文件,并且错误地文件2中声明了另一个char具有相同名称的类型的变量,我等待编译器或链接器给我一个错误,但是没有显示错误。当我使用调试器时,我看到将其转换为,对吗?以及这里实际发生了什么?xint xchar x

在我的代码上显示此修改:

文件一

#include <stdio.h>

int x = 50;  /** declare global variable called
                           x **/
int main()
{
    print();
    printf("      global in file one = %d",x);  /** Modification is just here **/
    return 0;
}

文件二

char x;   

void print(void)
{

    x = 100;
    printf("global in file two = %d ",x);
    return;

}

我的预期结果是=文件2全局= 100文件1全局= 50

但是结果是:文件2中的全局= 100文件1中的全局=

当我使用调试器时,我看到将int x其转换为char x,是吗?在这里实际发生了什么?

卡尔·诺鲁姆

您在这里遇到麻烦。从技术上讲,您的程序会导致不确定的行为。char x是暂定的定义,因为它没有初始化程序。这意味着链接器在链接时将其与int x另一个文件中的统一看起来有些奇怪,因为您的两个声明具有不同的类型,但是在您的情况下似乎已成功链接。无论如何,您只有一个x,而幸运的是使它按您看到的方式工作(可能还有小端架构)。

如果您希望两个变量是独立的,请将static它们设为,它们将被限制在各自翻译单元的范围内。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将任何名称的网页重定向到另一个文件夹中具有相同名称的另一个网页

来自分类Dev

在另一个位置查找并创建具有相同名称的空文件

来自分类Dev

C ++函数被另一个DLL中具有相同名称的函数隐藏

来自分类Dev

在另一个节点中具有相同名称的XML节点

来自分类Dev

从另一个具有相同名称的 api 更改 td 的值

来自分类Dev

如何恢复由另一个具有相同名称和大小的文件替换的文件

来自分类Dev

使用django-storage和boto保存具有相同名称的另一个文件

来自分类Dev

一个输入与另一个输入的ID具有相同名称时的含义

来自分类Dev

将文件从一个文件夹移动到另一个具有相同名称的文件夹

来自分类Dev

使用沙箱打开一个文件,并可以访问另一个具有相同名称的文件

来自分类Dev

Shell脚本读取目录名称并在另一个目录中创建具有相同名称的.txt文件

来自分类Dev

如何将具有相同名称的文件夹递归复制到Google Colab中的另一个文件夹

来自分类Dev

如何在Windows窗体中轻松地将一个控件替换为另一个具有相同名称的控件?

来自分类Dev

apache 2.4模块一个处理程序在另一个具有相同名称的处理程序中调用函数

来自分类Dev

如果我不关闭mysql连接并打开另一个连接会怎样?

来自分类Dev

如何编写一个makefile,其中已编译的目标文件位于另一个具有不同名称的目录中?

来自分类Dev

Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

来自分类Dev

当另一个具有相同名称的Type反映在F#模块上

来自分类Dev

如何将参数传递给另一个具有相同名称的内部函数?

来自分类Dev

计算具有相同名称的输入的值,并将最终值复制到另一个输入

来自分类Dev

Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

来自分类Dev

创建一个从一个文件夹到另一个具有不同名称的符号链接?

来自分类Dev

在Java中以相同名称调用方法中的另一个方法

来自分类Dev

从 thymeleaf 中的另一个变量声明变量

来自分类Dev

根据行中的另一个变量删除具有相同值的行

来自分类Dev

在angularJS中,如何浏览一个对象中的变量并将它们设置为等于另一个对象的相同名称的变量?

来自分类Dev

如何在一个文件中调用一个声明的变量到另一个文件?

来自分类Dev

尝试从另一个名称空间调用具有相同名称的函数时,函数调用中的参数太少

来自分类Dev

应用程序启动时,同一VM中已存在另一个具有相同名称“”的CacheManager

Related 相关文章

  1. 1

    将任何名称的网页重定向到另一个文件夹中具有相同名称的另一个网页

  2. 2

    在另一个位置查找并创建具有相同名称的空文件

  3. 3

    C ++函数被另一个DLL中具有相同名称的函数隐藏

  4. 4

    在另一个节点中具有相同名称的XML节点

  5. 5

    从另一个具有相同名称的 api 更改 td 的值

  6. 6

    如何恢复由另一个具有相同名称和大小的文件替换的文件

  7. 7

    使用django-storage和boto保存具有相同名称的另一个文件

  8. 8

    一个输入与另一个输入的ID具有相同名称时的含义

  9. 9

    将文件从一个文件夹移动到另一个具有相同名称的文件夹

  10. 10

    使用沙箱打开一个文件,并可以访问另一个具有相同名称的文件

  11. 11

    Shell脚本读取目录名称并在另一个目录中创建具有相同名称的.txt文件

  12. 12

    如何将具有相同名称的文件夹递归复制到Google Colab中的另一个文件夹

  13. 13

    如何在Windows窗体中轻松地将一个控件替换为另一个具有相同名称的控件?

  14. 14

    apache 2.4模块一个处理程序在另一个具有相同名称的处理程序中调用函数

  15. 15

    如果我不关闭mysql连接并打开另一个连接会怎样?

  16. 16

    如何编写一个makefile,其中已编译的目标文件位于另一个具有不同名称的目录中?

  17. 17

    Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

  18. 18

    当另一个具有相同名称的Type反映在F#模块上

  19. 19

    如何将参数传递给另一个具有相同名称的内部函数?

  20. 20

    计算具有相同名称的输入的值,并将最终值复制到另一个输入

  21. 21

    Webpack警告-忽略大小写时,存在另一个具有相同名称的模块

  22. 22

    创建一个从一个文件夹到另一个具有不同名称的符号链接?

  23. 23

    在Java中以相同名称调用方法中的另一个方法

  24. 24

    从 thymeleaf 中的另一个变量声明变量

  25. 25

    根据行中的另一个变量删除具有相同值的行

  26. 26

    在angularJS中,如何浏览一个对象中的变量并将它们设置为等于另一个对象的相同名称的变量?

  27. 27

    如何在一个文件中调用一个声明的变量到另一个文件?

  28. 28

    尝试从另一个名称空间调用具有相同名称的函数时,函数调用中的参数太少

  29. 29

    应用程序启动时,同一VM中已存在另一个具有相同名称“”的CacheManager

热门标签

归档