C計算問題a 1 b 2求a b要過程,謝謝

2022-10-24 22:38:03 字數 3596 閱讀 5389

1樓:馮小氣氣

a = 1(0000 0000 0000 0001b), b = 2(0000 0000 0000 0010b)

先計算~a得到1111 1111 1111 1110b,

再計算或得到1111 1111 1111 1110b | 0000 0000 0000 0010b = 1111 1111 1111 1110b

它最高位為1,表示這是個有符號數。也就是說1111 1111 1111 1110b是這個有符號數的補碼(計算機中有符號數是以其補碼方式存放的)。

對於有符號數而言,補碼=反碼+1, 反碼 = 除符號位外原碼取反。

即:反碼是1111 1111 1111 1110b - 1 = 1111 1111 1111 1101b

再去求原碼,除符號位外其它位取反: 1000 0000 0000 0010b.最高位為符號位,其它位為實際值,也就是-2了。

2樓:晶魚小公舉

樓主你好。

你這樣表示的話我就預設你寫的a,b 為

整型int 變數了。

求a /b 這個主要是一個資料型別轉化的點。

很明顯按數學上的邏輯來講答案是0.5。

但是放到程式裡就不是這樣了。

由於a,b 都為int 型別,所以其結果也要為int型別,0.5這是一個浮點型資料,轉化成int型別就是去掉小數點後面的部分,就是0(c ++預設直接捨去,而不是四捨五入)

c語言題: 已知a=b=c=0;則++a||++b&&c++的值為?正確答案:1,0,0,1 要過程, 謝謝

3樓:匿名使用者

邏輯運算子並不是運算子兩邊的表示式一定都執行,就本例來說:

a = b = c = 0;

d = ++a||++b&&c++;

1、&&的優先順序比||高,注意優先順序是「結合優先順序」而不是「計算優先順序」。所以整個表示式可以看做++a||(++b&&c++)

2、對於一個||邏輯或來說,只要||左邊的表示式為假(即0)才執行||右邊的表示式(即本例中的++b&&c++),如果||左邊表示式已經為真,那麼會造成所謂的「短路」即||右邊的表示式不再執行

3、由於++a是先++再賦值,則a=1,由於||左邊表示式已經為真(非零),則短路,右邊表示式不執行

4、按上面描述,答案a = 1, b = 0, c = 0, d = 1

總結,&&運算子,除非該操作符左表示式為真,才執行右表示式,否則直接為假

||運算子,除非該操作符左表示式為假,才執行右表示式,否則直接為真

4樓:sr開得比板慢

a++ a=1

因為a=1 所以 | |後面的都忽略了..所以b=0, c=0而且整個式子的值是1

還不懂的話可以追問

5樓:憂傷海域

||c=0;

b=c;

a=b;

c=c++(c=0)用過後為c=1;

b=++b(b=1)用過後為b=0;

++b&&c++=0(1&&0為假值為0)a=++a(a=1)用過後為a=0;

0||0為真值為1.

表示式值為1,a=0,b=0,c=1.

6樓:石化終結者

thangkfasd fasdf

int a =1 b= 2 c= 3 語句(++b,a)||(a++,c++);執行後a,b,c是多少

7樓:匿名使用者

(++b,a)||(a++,c++);

首先計算(++b,a):逗號表示式(++b,a)=a=1 過程中++b:b==3

由於使用||的邏輯運算子,當左邊的值為真的時候,整個表示式的值即為真,計算機就不會再去計算(a++,c++),因此

a=1(參加左邊運算,卻沒改變值的大小)

b=3(參加運算,值自加1)

c=3(不參加右邊運算,值不變)

8樓:匿名使用者

a=1,b=3,c=3

首先執行++b,b的值變為3,因為括號內表示式是逗號運算所以整個表示式的結果是a

因為a的值為1,為真,||的特性是兩個表示式有一個是真結果都為真,所以||後面的表示式並未執行

c語言 **回答問題 main( ) { int a=0,b=1,c=2,d; d=!a&&!(--b)||!c++; }

9樓:無邊絲雨飛舞夢

多&&運算,從左到右開始,出現為0,即邏輯假,則停止運算,a=1&&b=1的邏輯值為真即結果為1

10樓:

a=0 !a=1

b=1 --b=0 !(--b)=1

11樓:因團囡

&&和|| 是關係運算子,此處應先看!(--b)||!c++ ,它為真,原式可化簡為 d=!a&& 1

而!a 是真的,1也是真的,所以整個式子為1,所以d=1

12樓:w休息的風

一個有關運算子優先順序的問題,c程式設計書裡就有。

已知a=1,b=2,c=3,則表示式a*b&&(b++,!c)&&(a++,c++)的值是。該表示式運算過後,a=? ,b=? ,c=? 5

13樓:聽不清啊

該表示式運算過後,a=1 ,b=3 ,c=3因為 1*2的值非0,被認為是「真」

&&後面繼續計算:b++,!c

是一個逗號表示式,b變成了3,!c的值為0(因為c原值為非0,即「真」,取反後即為「假」),所以逗號表示式的值為「假」。

整個表示式的值已經確定,為「假」,後面總分不再運算。

所以,a=1 ,b=3 ,c=3

14樓:匿名使用者

首先得知道&&進行的是短路運算,如果運算子的左邊經計算後結果為假,則不會再計算右邊。

因a*b=2為真,接著計算(b++,!c),而(b++,!c)是一個逗號表示式,逗號表示式按從左往右計算,整個表示式的結果為最右邊那個表示式的結果。

所以,(b++,!c)經計算後為(2,0),逗號表示式的值是0,同時b為3,而已為假,不會再計算(a++,c++),因此,結果是表示式a*b&&(b++,!

c)&&(a++,c++)的值是0,該表示式運算過後,a=1,b=3,c=3。

15樓:三天打魚

看結果就知道了 執行了第一個括號之後就返回了 後面的括號沒有執行

第一個括號最後一個值是!c c邏輯取反運算 c是3 取反後是0 然後逗號表示式返回最後一個值 返回了0  前面的&&遇到0就直接返回結果了

16樓:

根據運算子的優先順序,表示式等價於

(++a) || (-b) && (++c)在c/c++中 0為false,非0就是true,上面的表示式就等於true || true && true

所以最終的值就是true,如果按照整數輸出,則為1

1 設a,b為實數,求a 2ab 2b 4b 5的最小值,並求此時a與b的值2 已

1 a b b 2 9 a b 0,b 2 0 即a 2,b 2時取最小值 9 內2 b a 4x 7x 11 3x 5x x 2x 11 x 1 10 0所以容 b a 設a,b為實數,求a 2ab 2b 4b 5的最小值,並求此時a與b的值 因a 2ab 2b 4b 5 a 2ab b b 4b...

a 2b 3c 12,且a b c ab bc ac,求a b c的值

a 抄2 b 2 c 2 ab bc ca 02 a 2 b 2 c 2 ab bc ca 0 a 2 2ab b 2 b 2 2bc c 2 c 2 2ca a 2 0 a b 2 b c 2 c a 2 0平方大於等於0,相加等於0,則三個平方都等於0所以a b 0,a b b c 0,b c ...

已知abb 10求,已知 ab 2 b 1 0求1 ab 1 a 1 b 2 1 a 2 b 2 1 a 2008 b

1 ab 2 b 1 0,所以ab 2 0且b 1 0 幾個非負數的和為0,則他們都為0 解得a 2,b 1 所以1 ab 1 a 1 b 1 1 a 2 b 2 1 a 2008 b 2008 1 1 2 1 2 3 1 2009 2010 1 1 2 1 2 1 3 1 3 1 4 1 2009...