2015-10-01 108 views
-6

我在下面的代碼在linux終端鍵入C語言基礎

#include <stdio.h> 
int main(void) 
{ 

    int a; 
    a=1; 
    printf("%d\n",a++); 
} 

現在的輸出被示爲1,而不是爲什麼說它使得我'遞增 使用的值++運算符,但仍然存儲在a中的值不會遞增。請幫助。

+3

請谷歌預增量之間的差額和後期增量。幾乎所有的C書籍和教程都應該涵蓋這些內容。 –

+1

「Linux終端」不會執行C代碼(任何shell都應該是這樣)。 – Olaf

+4

Google down?在這裏發佈問題而不是搜索自己真的更容易? – Olaf

回答

5

a ++是後增量。所以它首先分配它使用的地方的值,然後它增加。

執行以下兩個示例。使用後

int main(void) 
{ 
    int a, c; 
    a = 1; 
    c = a++; // assigns the value 1 to c and increments the value of a 
    printf("a: %d and c: %d\n",a,c); 
} 

int main(void) 
{ 
    int a, c; 
    a = 1; 
    c = ++a; // increments the value of a and then assigns it to c 
    printf("a: %d and c: %d\n",a,c); 
} 
1

在C,後綴運營商++增量變量的值:你應該得到一個明確的想法前,後增量之間。所以你的語句相當於

printf("%d\n",a); 
a += 1; 

您預期的行爲可以通過使用前綴++來實現:

printf("%d\n", ++a); 

這相當於:

a += 1; 
printf("%d\n", a);