【问题标题】:C and addition, integer first and later [duplicate]C和加法,整数先和后[重复]
【发布时间】:2016-08-01 17:45:51
【问题描述】:

我来自 Java,我想提高我的编码技能和深入了解它的工作原理,我认为最好的语言是 C 语言。我对它的工作原理感到非常兴奋,但现在请向我提出疑问。为什么在 C 中第一个代码不起作用,第二个是?

P.s.:我将跳过几个步骤来加快代码速度并专注于问题。我在学习C99。

int a,b,c;
int sum = a+b+c;
print scanf ecc...
printf("%d", sum);

结果将是 -1234567 ecc..

使用这段代码会很好用,这就是命令式编程的意思吗?

int a,b,c;
int sum;
print scanf ecc...
sum = a+b+c;
printf("%d", sum);

抱歉英语不好不是我的第一语言,我也会改进:°D

【问题讨论】:

  • Why in C first code don't work and the second yes? 因为在第一个变量中a, b, c 未初始化使用。

标签: c imperative-programming


【解决方案1】:

当您使用代码的第一部分时,即

     int a,b,c;
     int sum = a+b+c;
     print scanf ecc...
     printf("%d", sum);

它将首先添加a,b,c 然后将产生带有垃圾值的结果

在第二种情况下

     int a,b,c;
     int sum;
     print scanf ecc...
     sum = a+b+c;
     printf("%d", sum);

它将通过使用scanf读取值,然后将这些值相加,因此不会获取垃圾值并产生出色的结果

【讨论】:

    【解决方案2】:

    局部变量在 C 中没有被初始化,它们的值是不确定的。使用未初始化的局部变量会导致未定义的行为

    C 也与 Java 完全一样,在没有循环或 goto 的情况下是顺序的。语句从上到下执行,因此在使用后调用scanf 来初始化变量将不起作用。不会重做之前的操作。

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 2012-10-05
      • 2014-07-14
      • 2018-08-21
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      相关资源
      最近更新 更多