c - 对于以下程序,我只得到 2 个作为 op

标签 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);
}

最佳答案

你还没有初始化 es,所以你的程序只是打印程序运行时恰好在堆栈上的随机值。

你需要这样说:

e es = c;

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

关于c - 对于以下程序,我只得到 2 个作为 op,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508114/

相关文章:

c++ - 证明两点法有效(对和)

c - 如何从 unix gettime Jan 1970 API 推断当前时间(时钟)?

c - 显示 ASCII 字符

CreateFileMapping() 用于将长度未知的文本写入文件

c - 字符串比较在 C 语言中无法按预期工作

c - 当我输入 'Y' 时,为什么这个程序会跳过第一个传递到 else ?

c - Windows FTP 函数 [C]

c - C中多线程的整数转换问题

c - c 中 "=="和 "||"的运算符优先级

c - 调用系统调用的不同方式