赵嘉琦 发表于 2020-6-3 17:36:43

求助呀,我同学发的,为什么结果是2020呀,求大神详细解答一下,

#include <stdio.h>

int main (void)
{
      int i = {i = 2};
      
      printf("%d %d %d %d\n",i,i,i,i);
      
      return 0;
}

lll_jh888 发表于 2020-6-3 17:54:08

i=2 先执行,则 i=2,i=0,再执行 i={i=2},即:i={2,0}。因为一维数组不完全初始化(Partly initialized)规则,K&R C 中是这样阐述的:如果初始化表达式的个数比数组元素数少,则对外部变量,静态变量和自动变量来说,没有初始化表达式的元素将被初始化为 0。所以结果为 i=2,i=0,i=2,i=0。

sunrise085 发表于 2020-6-3 17:59:13

楼上说的对,我来领鱼币

赵嘉琦 发表于 2020-6-3 18:19:31

sunrise085 发表于 2020-6-3 17:59
楼上说的对,我来领鱼币

{:5_97:}

路θ甲 发表于 2020-6-4 10:29:16

{:10_257:}+1

依可儿 发表于 2020-6-4 13:55:49

楼上说的对~~

珂乔乔 发表于 2020-6-4 13:57:59

路过学习一下,顺便拿个币

月亮的爸爸 发表于 2020-6-5 22:10:54

{:10_277:}+1
页: [1]
查看完整版本: 求助呀,我同学发的,为什么结果是2020呀,求大神详细解答一下,