關於C語言的簡單問題

2022-10-08 13:05:04 字數 1383 閱讀 6817

1樓:匿名使用者

(1)表示式結果為1.

/=和=均是賦值運算(a/=a相當於a=a/a)。賦值運算的順序是自右至左(稱結合性)。也就是先a=a(a還是12),再a/=a,結果為1(相當於12/12)

(2)a%=(n%=2)相當於a=a%(n=n%2)。(%為求餘運算).5%2結果為1.12%1能夠整除,沒有餘數。所以結果為0.

(3)a+=a-=a*=a。(+= -= *=均是賦值運算)。正如1所述。

其為自右至左運算。先a=a*a。a的值為144.

而這個運算其影響前面的a。前面兩個a的值均是144.第二次運算a-=144。

144-144結果為0.同理,a值為0,前面a的值也就成了0。a+=0。

0+0結果還是為0.

至於第1題。結果不可能為0.要不就題有錯,要不就答案有錯。

以上結果經過c測試。

總體來說。以上題目需要注意兩點:

1)如果均是賦值運算時,運算要從右到左的算。

2)賦值運算會修改變數的值,先賦值的,會影響其後運算原變數的值。

2樓:匿名使用者

意思可能是說這些式子不成立,是假的。會輸出0

3樓:匿名使用者

這個是c的源**嗎?

(1)a/=a=a (2)a%=(n%=2)n=5 (3)a+=a-=a*=a

/=%=

+=-=

*=在c裡面有特殊含義運算子的,查詢一下c的書籍哦。

4樓:匿名使用者

1.a/=a=a = a/=(a=a) 值為1。

2. a%=(n%=2) = 12%=(5%=2)5%=2為求餘運算,其值為1;12%1也為求餘運算,其結果當然為0。

3.a+=a-=a*=a = a+=(a-=(a*=a))賦值運算子優先順序為向左優先,因此先計算a*=a,再計算a-=a,在這一步值為0,後面的a+=a當然沒有用了。

5樓:匿名使用者

(1)a/=a=a

等價於(a/=a)=a

a/=a之後,a的值是1,由於(a/=a)是乙個左值,所以它可以再次賦值,也就是a=a,之後,a的值還是1,而不是0

(2)n%=2等價於n=n%2,由於n=5,所以,n%2=1,此時原式就變成了a%=1,由於任何乙個整數都可以被1整除,所以最終結果是0

(3)原式等價於:

a+=(a-=(a*=a))

即先算最內層的括號a*=a,之後a=144再算外層括號,外層括號內的式子就等價於a-=a,此後,a=0最後算括號外面的a+=0,此時a=0,所以最終結果就是0

6樓:匿名使用者

汗!第乙個我居然不會!

回去好好學習。

匿名說得還可以。

簡單c語言問題,求教,簡單C語言問題,求教

include include int cmp const double a,const double b void k const double open,const double close void shadow const double open,const double close,con...

簡單的C語言問題,2個簡單的C語言問題

include void main outa 100 i for i 0 i 9 i outa i 1 a i for i 0 i 10 i a i outa i for i 0 i 10 i printf d a i 第二個 include void main b i 0 c i 5 0 for ...

簡單的C語言問題,乙個簡單的C語言問題

指標型別就是陣列名。b a就是把a 的陣列名賦值給了 b,則 b就儲存了a陣列。因為是b 所以先賦值陣列a給b 然後,b再自加。則b就為1.因為 b已經儲存了陣列a,所以 b的頭位址開始從陣列a 1 儲存,此時 b 20,30,40,50 因為運算優先順序是單目運算子高,所以先運算 所以,事實上 b...