问答详情
源自:5-10 局部与全局

关于X的赋值

#include <stdio.h>

int x = 77;

void fn1()

{

    printf("fn1(): x=%d\n", x);       

}

int main()

{

    int x = 10;  //x在这里赋值为10,在下一行判定为大于所以运行if括号里的代码

    if(x>0)

    {

        int x = 100; //x被赋值为100

        x /= 2; //在这里计算到结果x=50

        printf("if语句内, x=%d\n", x);       

    } //跳出if语句,在这里x是否重新被赋值为10

    printf("main方法内, x=%d\n", x);

    fn1();

    return 0;

}

运行结果:

if语句内, x=50
main方法内, x=10
fn1(): x=77


在运行完if语句后跳出是否重新被赋值为x=10??

提问者:叔的学习之路 2015-09-18 21:20

个回答

  • onemoo
    2015-09-18 23:36:52
    已采纳

    最开头的那个值为77的x  和 main函数中初值为10的xif中的那个x 是三个不同的变量,只是同名而已。

    在if中改变的是if中的那个x值,不会影响到main中的那个x,也不会影响到前面的那个x,所以没有什么“重新赋值”一说。

    只有fn1函数中没有再次定义x,所以它用的是最上面的那个x,打印出的就是77了。