我只得到2作为以下程序的操作

时间:2013-08-29 10:11:32

标签: c

请解释为什么我在这里获得输出2。我的预期o / p是5或7.请稍微点亮。谢谢!

#include<stdio.h>

typedef enum {a=3, b, c, d, j}e;

void f(e *e1) {
    printf("%ld", (int)*e1);
}

main(){
    e es;
    f(&es);
}

1 个答案:

答案 0 :(得分:4)

您尚未初始化es,因此您的程序只是打印程序运行时恰好在堆栈上的随机值。

您需要说出类似的内容:

e es = c;

这将为您提供所需的5输出。