-1

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

Ps:我会跳过几个步骤来加快代码速度并专注于问题。我正在学习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

4

2 回答 2

1

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

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

于 2016-08-01T17:50:58.647 回答
1

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

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

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

而在第二种情况下

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

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

于 2016-08-01T17:52:40.380 回答