1樓:喵不語
進行邏輯判斷,當a<=3時,其值為1.>3時,其值為0,a<=5也一樣道理,那個1的值就是1.最後進行形如a&&b&&cc的邏輯判斷,當a,b,c都為1時,整個表示式才為1
任何非0數代表真,0為假
2樓:匿名使用者
5和1都非0,為真,所以用1表示
c語言中,a=-1,b=1;if((++a<0)&&!(b--<=0))
3樓:青水之畔
++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
4樓:匿名使用者
(++a<0)&&!(b--<=0)
運算級() > ++ > -- > < > <= > ! >&&
執行順序
++a<0其中先++a=0 ++a<0 不成立 值為0&&兩邊都成立值為1
只要有0就不成立
所以後面的就短路了
後面根本就沒有執行
單純執行到++a<0就結束了
if的執行體不執行.....
5樓:浪人
++a是先算a=a+1再把a的值作為(++a)的值,如當a=-1時則(++a)=0;a=0.
b--則是
先將b的值作為b--的值,在執行b=b-1,如當b=1時則(b--)=1,b=0;
&&是數學中並的關係,!則是對()裡的否定,如果()裡的表示式成立則,!()不立,!的運算級高所以先執行!(),在執行&&。
6樓:匿名使用者
1 if 裡面有兩個判斷語句, 如果第一個為false,不管第二個為false或者為ture,結果都為false,所以如果第一個為false,就沒有必要執行第二個了,程式就是這麼做的。
2 在你的判斷中++a結果0.很顯然0<0 是false,所以此時你整個判斷語句就為false。下面即使再有n個條件也不會去判斷了。
7樓:匿名使用者
++a<0 先判斷a是否大於0 然後再加1 b--<=0 先b—1 然後再判斷<=0
c語言中,a=3,b=4,c=5; a||b+c&&b-c怎麼理解?
8樓:蹦迪小王子啊
||||
||baia || b + c && b - c= a || ((b + c) && (b - c))= 3 || ((4 + 5) && (4 - 5))= 3 || 1
= 1按照優du先級,先加減運算
zhi,後邏輯dao運算
而邏輯運算的幾個運算元版都是非0的,可以認權為是1因此最終結果為邏輯1
擴充套件資料c語言的運算子主要用於構成表示式,同一個符號在不同的表示式中,其作用並不一致。下面按計算的優先順序,分別說明不同作用的表示式。需要特別指出,在c語言標準中,並沒有結合性的說法。
相同優先順序運算子,從左至右依次運算。注意字尾運算優先順序高於字首。因此++i++應解釋為++(i++)。
而與或非的運算優先順序都不一樣,因此a && b || b && c解釋為(a && b) || (b && c)
合理使用優先順序可以極大簡化表示式。
9樓:匿名使用者
|(b - c))=3 || ((4 + 5) && (4 - 5))=3 || 1=1每對一個邏輯算符運算,得到的值都是非0即1,整個邏輯表示式內
的計算相當於將其分容解成幾個子式進行計算。以後有問題歡迎hi我
10樓:匿名使用者
||a ||bai b + c && b - c= a || ((b + c) && (b - c))= 3 || ((4 + 5) && (4 - 5))= 3 || 1
= 1按照優先順序du,先加減運算,後邏輯運zhi算
而邏dao輯運算的幾個運算元都是非版0的,可以認為是1因此權最終結果為邏輯1
11樓:
a=3,b=4,c=5;
這是一條邏輯復表示式,只可能有制0和1兩種取值,非零的時候取1,所以1樓的是不對的。又出現了2類運算子,加減和邏輯運算子,此處+-優先順序最高,其次是&&,最低是||,注意同是邏輯運算子優先順序不一樣。還須注意,按照優先順序加括號:
a || b + c && b - c
=a || ((b + c) && (b - c))=3 || ((4 + 5) && (4 - 5))=3 || 1
=1每對一個邏輯算符運算,得到的值都是非0即1,整個邏輯表示式的計算相當於將其分解成幾個子式進行計算。
以後有問題歡迎hi我
12樓:魔女之水玲瓏
我覺得應該是-3,或這個符號連線的兩個數字有一個或兩個不為零的數則為1,否則為0,且這個符號連線的兩個數都不為零則結果為1,否則為零,此題最終1+1-5=-3
c語言上的問題 !(a+b)+c-1&&b+c/2的值 a=3,b=4,c=5
13樓:聽不清啊
整個表示式的值為真(即 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
14樓:匿名使用者
根據從左到右計算順序,結合運算子優先順序,根據定義
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。
這裡主要是一個運算子優先順序的問題,在本表達多中。
小括號的優先順序最高,所以最先計算括號內的值。
其次是邏輯非,然後是除法,然後是 加減法,最終是 邏輯與。
15樓:匿名使用者
這個是邏輯運算只討論真假,與數值沒有多大關係只要弄懂運算級別高低就可以最後結果為一,不懂可以mm我
16樓:匿名使用者
()優先順序最高先算 !(a+b) =!7=0算術運算子大於&& 所以先算c-1=4
* /大於加減先算c/2=2然後加b等於6最後相與 4&&6 真與真還是真 最後等於1
17樓:麒麟也涅槃
a=3,b=4,c=5
a+b=7
!7=0
c-1=4 為真
b+c/2 不為0 所以也是真
真&&真 值為真 即=1
18樓:k寂寞的小炮
結果等於1
!(a+b) = 0;
0+c-1 = 4;
b+c/2 = 6;
6&&4 = 1;
19樓:匿名使用者
整個表示式為1啊···
20樓:有郊範圍
!(a+b)+c-1&&b+c/2=1
21樓:皚子萋萋
!(a+b)=0;1&&b=1;所以0+5-1+5/2=6
求c語言大神給我講解下下圖中的c=(a-=a-5),(a=b,b+3); 的運算過程以及中間逗號的意思
22樓:匿名使用者
首先,請搞明白一種表示式叫逗號表示式,就是將一組語句連著寫出來,中間用逗號分隔;表示式的取值是最後一個語句的取值。
c=(a-=a-5),(a=b,b+3); 這個語句是一個逗號表示式,前面的語句是c=(a-=a-5);後面的語句是(a=b,b+3);後面的語句也是個逗號表示式,整個表示式的值沒有處理,所以不關心。
計算:a-=a-5;即a-=-5;即a+=5;結果a=5c=(a-=a-5)結果c=5,a=5
a=b結果a=0
b+3運算了等於3但沒有儲存結果,對a,b,c的值不產生影響(a=b,b+3)的值是3,即b+3的結果,但這個結果也沒有儲存,對a,b,c的值不產生影響
最終:a=0,b=0,c=5
23樓:黑丶雨
逗號運算子:
在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後一個表示式的值。
逗號運算:
在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後一個表示式的值。
例如:int a1,a2,b=2,c=7,d=5;
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
對於給a1賦值的**,有三個表示式,用逗號分開,所以最終的值應該是最後一個表示式的值,也就是(d+3)的值,為8,所以a1的值為8。
對於給a2賦值的**,也是有三個表示式,這時的三個表示式為a2=++b、c--、d+3,(這是因為賦值運算子比逗號運算子優先順序高)所以最終表示式的值雖然也為8,但a2=4(第2行**運算完時,b=3,即第3行**執行時,b的值為4)。
注意事項:
逗號運算的結合性是從左至右,完畢之後整個表示式的值是最後一個表示式的值。
例子:int a[2],x=2,y=5;
a[0]=(x+3,y++,x++);那麼最終結果是:a[0]=2 x=3 y=6;
為何a[0]=2:因為(x++)是運算之後再自加
a[1]=(x++,x+3,x+7);那麼最終結果是:a[1]=11 ,x=4
第一反應,我以為a[1]=10,就是3+7;其實是錯的。
計算a[0]的時候,x++了一次,此時x=3;計算a[1]的時候,又x++一次,此時x=4,因此a[1]=4+7=11
不信你改成a[1]=(x++,x+7,x+3);除錯一下,逗號表達試結果是7,就是4+3,說明經過一個逗號,x已經自加變成4了。[1]
再來一個關於結合性的例子:
int i=24;
i=(i++,i++,i++,i++);//i=27
因為逗號運算子的結合性是自左向右,所以四個i++會依次執行,但是最後一個i++在賦值之後才進行運算,所以最終返回27
24樓:匿名使用者
中間的逗號起到分隔作用,逗號是一個雙目運算子(a,b)返回的是b的值,同
時逗號是從左往右算,所以先算a
(a-=a-5) 中,先算a-5還是 -= ?要看運算子優先順序,-比-=高,所以先算a-5 =-5
然後a-=-5,此時a仍未0,所以該表示式為5第二個同理
(a=b,b+3)返回的是b+3
值得一提的是,由於逗號比賦值優先順序低,所以c=(a,b),(c,d)實際上是
c=(a,b),返回的是b
25樓:無敵玉琴
a=0;b=0;c=5
在c語言中,if(a==1&&b++=2)是什麼意思?
26樓:
若a=1並且b=2(執行該步操作後,b的值加1為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);這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的程式設計當中,應該儘量避免出現上面複雜的情況。
c語言判斷a0b0,c語言中,a1,b1ifa0!b
不知道你要問什麼,但是我仍然可以告訴你這句話的意思!1,a,b肯定是在程式的某個地方定義的整形變數,他們代表的是任何整數,具體是多少,要看程式怎麼賦值了2,符號就是 等於的意思,注意c語言中只有一個等號的情況下,不是等於的意思,而是賦值3,是並且的意思 也就是說要這個符號前後的表示式全都是真的情況下...
在C語言中0是真還是假,C語言中什麼時候0表示真,1表示假
這裡的 0或者1 真或假 不能說明程式出錯了,反而說明程式執行成功了。因為前面的都執行完成才執行return 按照我個人的理解,這句語句的意義在不在於函式的返回值是什麼,意義在返回值的型別和宣告函式時候的返回值型別一致就行。因為如果不返回,或者返回的值型別有問題,就出錯。如果你的main定義為voi...
c語言中0與0是真值嗎,在C語言0表示真還是假,為什麼會這樣呀
是假值,因為在c語言中,0為假,非0為真,0與0的結果仍然是0,所以為假 不是的 0與0是假 0 0異或0是真 1 在c語言0表示真還是假,為什麼會這樣呀 return 0中的0是數值0表示返回的是0 而代表假的0叫邏輯值0 邏輯值有0和1 如果是數值的話,非0為1像 1 2 1 2 3。這些數值的...