2016-08-01 70 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讀取值,然後添加這些值,不採取垃圾值,併產生一個奇妙的結果

相關問題