【问题标题】:How does this array subtraction work without assignment?这个数组减法如何在没有赋值的情况下工作?
【发布时间】:2023-02-16 23:07:22
【问题描述】:

该数组没有任何赋值,但是当减去数组中的值时,z值变为 20。
谁能解释这个概念?
任何帮助,将不胜感激。

#include <stdio.h>

int main()
{
    int a[10][20][30][40];
    int z = a[6] - a[5];

    printf("%d\n", z); // z value is 20. why?
}

【问题讨论】:

  • 为什么不应该是20?该数组可以包含任何旧的随机数,因为您没有说您想要特定的数字
  • 但你不是在减去价值。
  • 该数组未初始化,可以填充任何东西。碰巧a[6] - a[5] = 20,但这绝对不能保证。
  • 是指针减法,不是值减法。
  • 此代码行为定义得非常好。 a[6]a[5]数组自己,所以减去它们是指针算术的主题。

标签: arrays c


【解决方案1】:

因为它是指针运算。

a[6]a[5]int[30][40] 类型的 20 元素。

这是因为arrays decay to pointers

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2021-04-04
    • 2019-12-15
    • 1970-01-01
    • 2013-01-23
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多