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...