关于变量重复定义的理解

在c语言中,以下代码会被认为是重复定义:

#include <stdio.h>
main()
{
    extern int i;
    int i = 1;
}

因为extern int i会让编译器认为外部已经定义了i,以后直接用就可以 了,可以直接对i赋值,例如i = 4。但如果外部居然没有定义i,则初始化i或对i赋值时,编译就会出现未知错误——你告诉了编译器外边定义了一个i,已经有了一个房间(地址),可是人家没找到,你让人家怎么办嘛。


编程语言是一种规则,而编译器则是实现这种规则的工具,以上体现的规则就是:变量不能重复定义。那么编译器是如何实现规则的呢?比如,如何识别其中某种变量重复定义错误?其中一个方法就是通过extern这个关键字,如果main函数中用extern修饰i,则编译器看到extern i时会认为i已经被定义了,意味着后面如果写一句int i来定义i时,就立马报错说你重复定义了,尽管事实上你没有定义i。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,一旦变量定义,就不能直接删除或覆盖之前的定义。如果您想在同一作用域中重复定义变量,可以使用以下两种方法之一: 1. 重新命名变量:为了避免重复定义变量,您可以将变量重命名为不同的名称,例如添加一个数字或其他字符以使其唯一。 2. 改变作用域:如果您想要定义一个与之前相同名称的变量,您可以将其定义在不同的作用域中。例如,您可以在一个方法中定义一个局部变量,然后在另一个方法中定义一个具有相同名称的局部变量。这样,每个变量只在其所在的方法中可见,不会造成命名冲突。 需要注意的是,重复定义变量可能会导致代码难以理解和维护,因此应该尽量避免这种情况。 ### 回答2: 在Java中,一旦变量定义,它的作用范围就被确定了,并且不能再对其进行重新定义或删除之前的定义。因此,不能直接删除之前定义变量。 然而,如果需要更改变量的值或者重新赋值,可以通过赋予新的值来修改变量的内容。例如,假设我们定义了一个整型变量x,并赋值为5: int x = 5; 如果我们想要更改变量x的值,可以直接给变量x赋予新的值,例如: x = 10; 这样就将变量x的值从5改为了10。这并不是删除之前的定义,而是修改了变量的值。 另外,如果变量的作用范围是在一个特定的代码块内,可以通过离开代码块来让变量超出作用范围,从而使之前的定义无效。例如,如果变量x的定义在一个代码块中: { int x = 5; // 一些代码 } 当离开这个代码块后,变量x的作用范围就结束了,之后再使用变量x就会报错。这种方法也算是一种间接删除之前定义变量。 总而言之,Java中重复定义变量无法直接删除之前的定义,但可以通过重新赋值来修改变量的值,或者通过超出作用范围使之前的定义无效。 ### 回答3: 在Java中,变量重复定义是不被允许的。如果在同一作用域中多次定义同一个变量,编译器会报错。因此,我们不能直接删除前一个定义,而是需要进行调整。 要解决这个问题,可以通过以下几种方法: 1. 在重复定义变量之前,先检查是否已经定义过该变量。可以使用if语句或者使用布尔变量来判断变量是否已经被定义。如果已经定义过,则可以选择跳过该变量定义,或者给出错误提示。 2. 将重复定义变量修改为不同的变量名。如果不同的变量名更准确地描述了其作用和含义,那么使用不同的变量名可以提高代码的可读性和可维护性。 3. 将重复定义变量放在不同的作用域中。在Java中,变量的作用域可以通过大括号{}来限定。在不同的作用域中定义同一个变量是允许的。这样可以使得变量的作用范围更加明确,减少命名冲突的可能性。 总结来说,在Java中重复定义变量是不被允许的,但可以通过适当的方法来处理这种情况。通过增加判断、修改变量名或者调整变量的作用域等方式可以解决重复定义变量的问题,从而保证代码的正确性和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值