一个面试题想到的,关于a = a++;

2016-09-21  本文已影响0人  Unlucky

前不久群里的一个朋友问一个题目:

#include <stdio.h>

int main (void)
{
    int a = 0;
    for (int i = 0; i < 10; i++) {
        a = a++; //先赋值
    }
    printf("%d\n",a);
    return 0;
}

运行结果是:

0

在这个程序当中,无论把循环次数更改多少次,运行结果都还是为a的初始值,其原因在于,首先将 'a' 赋值给 'a' ,即无论循环多少次,变量a最终会被赋值0。

将上述代码稍微修改一下:

#include <stdio.h>

int main (void)
{
    int a = 0;
    for (int i = 0; i < 10; i++) {
        a = ++a; //先自增
    }
    printf("%d\n",a);
    return 0;
}

运行结果是:

10

再改一下循环体内部的a:

include <stdio.h>

int main (void)

{
    int a = 0;
    for (int i = 0; i < 10; i++) {
        a++;
    }
    printf("%d\n",a);
    return 0;
}

运行结果仍然是:

10
上一篇下一篇

猜你喜欢

热点阅读