2016-08-01 39 views
-1

我来自Java,我想提高自己在编码方面的技能以及它在深层中的工作知识,并且我认为最好的语言是C作为所有人的母亲。我对它的工作原理感到非常兴奋,但现在请您提出疑问。为什么在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

+0

'为什么在C第一代码不工作,第二个是?因为在第一个变量'a,b,c'未使用初始化。 –

回答

1

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

C也完全像Java一样,在没有循环或gotos的情况下是连续的。语句从上到下执行,所以调用scanf在使用它之后初始化一个变量将不起作用。之前的操作不会重做。

1

当使用代码的第一部分即

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

它将首先添加abc 然后将产生

,而在第二种情况下垃圾值导致

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

它将通过使用scanf读取值,然后添加这些值,不采取垃圾值,并产生一个奇妙的结果

相关问题