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 分號後...