【发布时间】: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]是数组自己,所以减去它们是指针算术的主题。