2014-04-28 139 views
-3

找不到更好的標題,所以編輯它,如果你有更好的主意。爲什麼這項工作

下面是while循環在C:

while ((c = getchar()) != EOF) 

怎樣的條件下工作?

(c = getchar())(c = getchar())如何賦值表達式「返回」一個值,因爲它是與EOF比較的?

+2

你已經得到了答案。賦值表達式返回分配的值。它和'a = b = 0是一樣的;' –

+0

http://stackoverflow.com/questions/7119470/int-c-getchar –

回答

1

在C的assignement操作烯表達它的值是分配的結果。

例如a = 5是一個表達式,其值爲5

((c = getchar()) != EOF調用getchar,並把返回值中c,然後將結果(c現在含量)=到EOF進行比較。

1

賦值的表達式返回賦值爲的值。

當你這樣做:

((c = getchar()) != EOF) 

你所分配的值與EOF

+1

爲了OP的緣故,你可以打開詳細模式嗎?新頭像? – devnull

1

在C中,賦值表達式本身就是賦值的值。

該屬性允許程序員應用不同的技術,如所提到的,直接比較分配的值。

if ((a = f()) != 0) .... 

或多個分配

a = b = f()