【问题标题】:Why does it prints 10 instead of 3? in C Lang [duplicate]为什么它打印 10 而不是 3?在 C 语言中 [重复]
【发布时间】:2019-06-03 20:24:27
【问题描述】:
#include <stdio.h>

int main(){
    int a = 3;
    int b[] = {1,2};
    int c = 4;
    b[3] = 10;

    printf("a = %d\n",a);

    return 0;
}

输出:10

它可能是一个整数输出,它也不携带任何垃圾值,但是当我将值分配给变量 aa = 5 及以上值5 之后,它只是按原样打印输出,告诉我这里发生了什么!

【问题讨论】:

    标签: c arrays


    【解决方案1】:

    您的代码中有未定义的行为

    b[3] = 10;
    

    当您初始化数组时,您只为 2 个项目分配了空间。您正在尝试访问第 4 个元素并且该内存不属于数组,因此您会得到奇怪的结果。碰巧变量a 存储在与b[3] 相同的位置,因此被覆盖

    尝试打印sizeof您的数组并检查为该数组分配了多少内存

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 2018-05-16
      相关资源
      最近更新 更多