c語言中為什麼b11最終得出b

2021-05-21 05:57:29 字數 6594 閱讀 3344

1樓:啊啊啊的帝國號

&&是邏輯與運算,邏輯運算子的一種

運算規則是

真 && 真 = 真

真 && 假 = 假

假 && 真 = 假

假 && 假 = 假

其中,前面的兩個是參與運算的元素,等號後面是運算的結果然而在c語言中沒有'真'和'假'兩個玩意

就用1表示真,0表示假

在運算的時候,0為假,非0即為真

(-1)&&(-1)

這裡參與運算的兩個值都是(-1),不是0,所以是真也就是真&&真

結果為真,

在作為運算結果的時候,真用1表示,假用0表示,所以最終結果是b=1

記住兩點

在運算的時候,0為假,非0即為真

在作為運算結果的時候,真用1表示,假用0表示,

2樓:匿名使用者

&&是邏輯運算子,兩邊只有0與非0的差別,非0即為1.-1!=0所以-1為真,即1,b=(-1)&&(-1)裡,括號優先順序最高,其次是&&,最後是=,因此先-1&&-1,兩邊都為真,所以返回真,即1,語句由此變成b=1.

3樓:浪子灬風飛揚

因為&&是邏輯運算子,-1不為0,即為真,所以-1&&-1即:真&&真,結果為真,即1

4樓:匿名使用者

邏輯運算子只是判斷真值的,樓上正解

c語言 關於邏輯運算且 b=(-1)&&(-1) b是多少,怎麼算的?

5樓:匿名使用者

c語言使用非0代表邏輯真(返回邏輯真時使用1),0代表邏輯真。

而&&是邏輯與運算子,當兩邊同時為真時,結果才為真。

-1非0,代表邏輯真。因此(-1)&&(-1) 就是真&&真,結果仍然為真。

即上面的運算變成了b=真,即b=1

6樓:it孤鶩

-1 為真 ,

那麼 -1 && -1 就是真 就是1

那麼b=1

7樓:匿名使用者

非 0 就為真 所以-1為真

c語言中b=a&&(-1);是什麼意思啊? 1+1=?

8樓:冬天終將過去

2, 1

---------------------因為a= 25/10%9 = 2

b = a&&(-1) ,即 2 ||(-1), 兩個非0值的邏輯與,結果為真,但b是整型 ,一般的編譯器結果為 1(有可能因不同的編譯器,結果會不一樣,但肯定不是0)

9樓:永恆組

-1非零,所以

為真,任何數與1就是它本身,所以只要a不為零,這個b就等於1 只有a=0時,b=0 1+1 數學上算出來是2 數位電路中為1 算錯的時候是除了1和2以外的任何數字

麻煩採納,謝謝!

c語言中b=(-1)&&(-1);是什麼意思?&&的前後是什麼才會得到0?

10樓:匿名使用者

&&是邏輯與,當前後都為真整個值才為真,否則為假.

&&的前後只要有一個為0結果就是0

11樓:飛來飛去

&&前後只要有一個是0,b就等於0,與正負無關

c語言中,a=-1,b=1;if((++a<0)&&!(b--<=0))

12樓:青水之畔

++a,先將a加1,再判斷,

a=0,(++a<0)為假,值為0

b--,先進行判斷,再減一,b=1,所以(b--<=0)值為假,因邏輯是與,(++a<0)為假,整個表示式必為假,此時便不再算後面的表示式,因此,b的值並沒有減1.

結果(++a<0)&&!(b--<=0)值為0,a為0,b為1

13樓:匿名使用者

(++a<0)&&!(b--<=0)

運算級() > ++ > -- > < > <= > ! >&&

執行順序

++a<0其中先++a=0 ++a<0 不成立 值為0&&兩邊都成立值為1

只要有0就不成立

所以後面的就短路了

後面根本就沒有執行

單純執行到++a<0就結束了

if的執行體不執行.....

14樓:浪人

++a是先算a=a+1再把a的值作為(++a)的值,如當a=-1時則(++a)=0;a=0.

b--則是

先將b的值作為b--的值,在執行b=b-1,如當b=1時則(b--)=1,b=0;

&&是數學中並的關係,!則是對()裡的否定,如果()裡的表示式成立則,!()不立,!的運算級高所以先執行!(),在執行&&。

15樓:匿名使用者

1 if 裡面有兩個判斷語句, 如果第一個為false,不管第二個為false或者為ture,結果都為false,所以如果第一個為false,就沒有必要執行第二個了,程式就是這麼做的。

2 在你的判斷中++a結果0.很顯然0<0 是false,所以此時你整個判斷語句就為false。下面即使再有n個條件也不會去判斷了。

16樓:匿名使用者

++a<0  先判斷a是否大於0   然後再加1    b--<=0    先b—1  然後再判斷<=0

c語言中 b=a&&(-1); 是什麼意思啊

17樓:匿名使用者

if (a&&(-1))能理解嗎?

這兒就是把條件中的表示式賦值給了b,也就是a和-1都為真時,b為1,否則,b為0。這裡-1非0,所以為真,關鍵就是看a的取值了,如果a取非0,則b的值就是1,否則b取0。

不知說清楚了沒

18樓:匿名使用者

「&&」是c語言裡的邏輯與運算子,優先順序為第5級,「=」是賦值運算子,優先順序為第2級,「()」為單目運算子,優先順序最高,為15級結合性是自右向左的。首先,括號裡為「-1」,即為非0,也就是為真,「b=a」,是將a的值賦予b,這要分兩種情況的:①當a為非0時,整個表示式的值就為非0;②當a為0時,由於是邏輯與的運算,整個表示式的值就為0。

這個表示式的取值主要在於a的取值情況。

19樓:匿名使用者

&&是邏輯運算子 兩個運算元都為真時候表示式才為真即true(1) 這個表示式當a非0時候b=1 否則為0

c語言中b=(-1)&&(0,1)是什麼意思?

20樓:示申僉

(0,1)是逗號表示式,這個表示式的值就應該是最右邊這項的值1

b=(-1)&&(0,1)

就相當於b=(-1)&& 1;由於-1和1都是非0值&&運算之後肯定為真,為真則值為1所以b=1;

21樓:匿名使用者

&&是與運算子,如果兩邊都是非0運算結果才是1這應該知道吧。-1就是一個非零常量,(0,1)這個考得主要是「,」運算子,不管括號內有多少個數都取最後一個值作為&&運算右邊的量,所以兩邊都是非0,運算結果為1.基本就是這樣,有問題可以再提問。

22樓:匿名使用者

(-1)就是-1沒什麼特殊含義。

(0,1)就是1,(a,b)=b。小括號運算就是取後面一個。

a&&b,a和b都不為零時結果為1

23樓:夜光隨行

對於一個邏輯表示式,其值只要不是0就被設定為1,(-1)不是0,所以就認為是1,

對於一個逗號表示式,它的值取最後一個表示式的值,即x = (0,1,2,3);

則x的值為3,所以這裡(0, 1)的值為1,所以b = (-1)&&(0, 1)等價於b = 1 && 1

所以b的值為1。

24樓:匿名使用者

(1):

/和%優先順序相同,但是結合順序是從左往右

a=d/100%9

等價於:

a=(d/100)%9

因為d是int  所以

d/100=2,

2%9=2

a=2;

(2):

(0,1)是逗號表示式,結果是1

(-1)&&1結果是1

b=(-1)&&(0,1)=1

25樓:匿名使用者

-1沒什麼意思啊,

(0,1)是逗號表示式。其值等於最後表示式的值。即1;

-1&&1的結果自然是true。

所以b為1;

26樓:匿名使用者

都好表示式 表示式1,表示式1,其求解過程先求表示式1,後求表示式2,整個表示式值是表示式2的值,所以(0,1)的值是1,(-1)加括號是為了調整結合順序。

27樓:匿名使用者

好的,其實這題很簡單的,你不要對數值 過於敏感。看到 && 這個符號 就應該想到 它左右兩邊的值是 」0「 還是」 1「 換句話說 ,是」真「還是」假「。然後很容易明白 -1 ,非0,是 」真「然後 後面的逗號表示式的值是1 就是」真」。

而邏輯表示式&&的意義是 兩個為真 就為真。所以是真 或者說 是 「1」你明白了嗎?

c語言b=2&&(-1)=?是什麼意思

28樓:天府第一寶

3)。邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。

符號 功能

&& 邏輯與

|| 邏輯或

! 邏輯非

當表示式進行&&運算時,只要有一個為假,總的表示式就為假,只有當所有都為真時,總的式子才為真。當表示式進行||運算時,只要有一個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!

)運算是把相應的變數資料轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。

還有一點很重要,當一個邏輯表示式的後一部分的取值不會影響整個表示式的值時,後一部分就不會進行運算了。例如:

a=2,b=1;

a||b-1;

因為a=2,為真值,所以不管b-1是不是真值,總的表示式一定為真值,這時後面的表示式就不會再計算了。

這是一類特殊的運算子,自增運算子++和自減運算子--對變數的操作結果是增加1和減少1。例如:

--couter;

couter--;

++amount;

amount++;

看這些例子裡,運算子在前面還是在後面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表示式的一部分,兩者就有區別了。運算子放在變數前面,那麼在運算之前,變數先完成自增或自減運算;如果運算子放在後面,那麼自增自減運算是在變數參加表示式的運算後再運算。這樣講可能不太清楚,看下面的例子:

num1=4;

num2=8;

a=++num1;

b=num2++;

a =++num1;這總的來看是一個賦值,把++num1的值賦給a,因為自增運算子在變數的前面,所以num1先自增加1變為5,然後賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因為自增運算子在變數的後面,所以先把num2賦值給b,b應該為8,然後num2自增加1變為 9。

那麼如果出現這樣的情況我們怎麼處理呢?

c=num1+++num2;

到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的程式設計當中,應該儘量避免出現上面複雜的情況。

29樓:匿名使用者

讓你用邏輯運算子和賦值運算子的優先順序

c語言上的問題 !(a+b)+c-1&&b+c/2的值 a=3,b=4,c=5

30樓:聽不清啊

整個表示式的值為真(即 1)

!(a+b)=!7=0

!(a+b)+c-1=0+5-1=4

b+c/2=4+2=6

原式=4&&6=1 //兩個非0的值,即兩個true,相與的值,仍為true,即1

31樓:匿名使用者

根據從左到右計算順序,結合運算子優先順序,根據定義

a = 3, b = 4, c = 5,假定 a,b,c 為 int。真值為1,假值為0。

計算步驟如下:

1、計算 a + b,結果為 a + b = 7

2、計算 !( a + b) 結果為 0,也可以認為是false(假)。

3、計算 c/2,假定c為int時,結果為 2(取整),為float或者double時為2.5,但不影響最終結果,因為都是真值(非零值)。

4、計算 0 + c,結果為 5

5、計算 5 -1,結果為 4。

6、計算 b + 2 或者 b + 2.5,結果為 6 或者 6.5。

7、計算 4 && 6 後者 4 && 6.5,因為兩邊都為非零值,所以結果為 1,或者true。

這裡主要是一個運算子優先順序的問題,在本表達多中。

小括號的優先順序最高,所以最先計算括號內的值。

其次是邏輯非,然後是除法,然後是 加減法,最終是 邏輯與。

C語言中b11是什麼意思的前後是什

是邏輯與,當前後都為真整個值才為真,否則為假.的前後只要有一個為0結果就是0 前後只要有一個是0,b就等於0,與正負無關 c語言中b 1 0,1 是什麼意思?0,1 是逗號表示式,這個表示式的值就應該是最右邊這項的值1 b 1 0,1 就相當於b 1 1 由於 1和1都是非0值 運算之後肯定為真,為...

c語言中,inta 3,b 2,c 1,為什麼賦值語句a b c 1錯誤了

賦值語句沒有錯,錯的應該是變數的說明語句 inta 3應該在變數與型別說明符間加空格以示區別 int a 3,b 2,c 1 沒有錯啊。include int main inta 3 這個連起來寫已經錯了。當然,排除你是筆誤。a b c 1,是合法的。沒有錯誤。在vs 2010中可以編譯通過。因為a...

c語言中int a 1,b 3 switch a bcase 1 printfncase 2 1 printfn 對麼?詳解

include int main 這是我自己理解之後寫的,switch語句中case後要加break,case的所有情況寫完後還要加default語句,表示除 內case外的情況發生容時要怎麼做。本程式就沒有等於a b的情況,需要default語句。case 1 printf n break 分號後...