C和加法,整数优先

时间:2016-08-01 17:45:51

标签: c imperative-programming

我来自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

2 个答案:

答案 0 :(得分:1)

本地变量未在C中初始化,其值为 indeterminate 。使用未初始化的局部变量会导致未定义的行为

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

答案 1 :(得分: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读取值,然后添加这些值,这样就不会获取垃圾值并产生精彩的结果