翁坤1125 发表于 2020-4-27 10:39:49

C,18讲

小甲鱼说这段代码中输出的是
0 1 2 3 4 5 6 7 8 9 10
可是明明输出
0 1 2 3 4 5 6 7 8 9 111

使用的是Windows系统DEV-C++

上代码——
#include <stdio.h>

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

wp231957 发表于 2020-4-27 10:41:24

越界了,错误代码没有研究价值

永恒的蓝色梦想 发表于 2020-4-27 10:42:06

都搞越界了,研究这个干嘛?

sunrise085 发表于 2020-4-27 10:47:00

程序中只给a分配了10个字节的空间,若强行给它多于10个数据的话,有时候也不会报错,但是是有风险的,毕竟多出点那些数据所占的空间并没有分配给该程序,很有可能会被其他程序篡改。
具体输出会是111还是其他的什么值都不确定,也有可能是10(这个算是其他值)。
页: [1]
查看完整版本: C,18讲