c程序显示的年龄不正确

c程序显示的年龄不正确,c,C,为什么我的C程序没有显示正确的年龄?使用stock编译器在代码块上进行im。它一直显示50。我不明白为什么会这样。我也在这里试过。它显示的年龄为零 #include <stdio.h> #include <stdlib.h> int main() { int age; int currentYear; int birthYear; age = currentYear - birthYear; currentYear = 2016

为什么我的C程序没有显示正确的年龄?使用stock编译器在代码块上进行im。它一直显示50。我不明白为什么会这样。我也在这里试过。它显示的年龄为零

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int age;
    int currentYear;
    int birthYear;

    age = currentYear - birthYear;
    currentYear = 2016;
    birthYear = 2000;

    printf ("You are %d years old. It is now:%d. It began in:%d.", age, currentYear, birthYear);

    return 0;
}
#包括
#包括
int main()
{
智力年龄;
int本年度;
int生日;
年龄=当前年份-出生年份;
本年度=2016年;
出生年份=2000年;
printf(“您已经%d岁了。现在是:%d。它开始于:%d.”,年龄,当前年份,出生年份);
返回0;
}
结论

  • 未初始化的自动变量处于一个不确定的阶段,因此您得到了年龄的非感官值
  • 此外,表达式通常按照它们在代码中出现的顺序进行计算。从逻辑上讲,把
    age=currentYear-birthYear放在这里是有意义的在末尾
  • 参考

    ISO/IEC 9899:201x 6.79->10

    如果未初始化具有自动存储持续时间的对象 显然,它的值是不确定的

    重新排序

    age = currentYear - birthYear;
    currentYear = 2016;
    birthYear = 2000;
    


    您首先取两个未初始化变量的差值(这是不好的,因为结果未定义),然后才设置两年变量。

    因为您减去了未分配的变量。您应该将
    age=currentYear-birthYear在为
    当前年份
    出生年份
    赋值后,在这里提问之前,您需要学习最基本的编程知识。这也是一个面向专业和热心程序员的网站。
    age = currentYear - birthYear;
    currentYear = 2016;
    birthYear = 2000;
    
    currentYear = 2016;
    birthYear = 2000;
    age = currentYear - birthYear;