1樓:節俊智雲旋
最後值為7,這是一個if語句,就是
inta=5,b=6;
if(++a==b--)
++a;
else
--b;
++ar的規則是先運算,所以括號中左值++a=6,a=6;
==的優先順序低過--,所以先計算b--
b--的規則是先賦值,所以括號中右值b--=6,b=5;
左值6==右值6,即條件為真,執行++a,因為a值已是6,所以加1操作後,
結果為7
2樓:汲廣英武巳
49運算a=‘0’賦值,得到a=48,
運算邏輯非,前面是0,後面b--就不運算了,這個是&&的特性。所以b=1
最後a+b=48+1=49
這個是逗號運算子,得到的是最後一個逗號後面的表示式的值,也就是49
3樓:班汀蘭榮子
答案是48
表示式1,表示式2
返回的值是表示式2的值,計算過表示式1,a的值被賦值成'0'也就是48,b的值是0,相加得到48
所以返回48
4樓:綦問凝倫雲
“!(a=‘0’)&&b--”
分步解答:
第一步:a='0',
'0'是字元,其對應的acsii碼值是48,則賦值後a的值是48。
第二步:b--
,b先運算,再執行自減運算,所以,執行
&&運算是b是
1,執行後
b的值是0;
第三步:a+
b即是48+
0=48且這是一個逗號表示式,其值為表示式2
的值,故
答案:48
5樓:波暢鄲嫚
結果變數a值為48,b值為1,表示式!(a='0')&&b--,a+b值為49
!(a='0')&&b--,a+b
根據運算子優先順序,結合性,即
(!(a='0'))
&&(b--)
,a+b
由於逗號運算子和&&運算子的求值順序定義為自左向右,逗號表示式的值由最某項決定
故這個表示式的值必為a+b
由於&&運算子的短路效應
!(a='0')值為0,且a值為字元‘0’的ascii碼值48所以b--未執行,即b值仍為1
因此48+1=49
6樓:捷遠扈珍
從優先順序開始算起,()>
-->!
>&&(a=‘0’用的ascii碼錶查的)
a=48
b--b=0
表單式的值為0,
a+b=48
假定int a=3,b=2,c=0表示式c=a>b>1&&(a++==1+b++),a+b+c的值是?
7樓:夕婕官以
因為a>b為真所以a>b=1,而1不可能大於1,所以a>b>1為假,所以a>b>1=0,導致&&後的語句不執行,所以c=0,a=3,b=2,所以a+b+c=5
8樓:黎哲妍多名
a+b+c的值是5。
因為a>b為假,值為0
0>1的值也是0。
所以後面的&&(a++==1+b++)不執行。
c的值就是0,a和b的值未變,所以,a+b+c的值是5。
設 int a=0,b=1;表示式(!a||++b)後b的值是什麼
9樓:匿名使用者
優先順序問題
!的優先順序最高,其次++,最後才||
又因為!a==1 ,||在c語言中,只要||前面的值為1,就不再執行||後面的
所以它不會執行++b b因此沒有增值,還是原來的值,b=1
10樓:匿名使用者
短路求值問題,||的結合性是從左到右的,因此會先計算!a的值,由於a==0,所以!a不等於0,因此不必再計算後面的++b了,因為到此整個表示式的結果已經可以確定了,所以b值沒有改變,還是1.
請到以下頁面檢視短路求值的詳細解釋
11樓:悲劇故土
b=1;
具體操作是#include
#include
int main()
然後輸出是1 1 0;
至於為什麼呢,是因為在c中,對於||或運算子來說,如果它前面一個表示式為真的話,它就不會執行後一個語句,從而直接判斷這個表示式是真!!
因為表示式(!a||++b)中!a為真,所以++b這個語句沒有執行,這個問題經常會被忽略,建議看看《c語言解惑》這本書,對你有很大的好處!
12樓:叔淑蘭本乙
這個問題涉及運算子優先順序的問題。
首先,.++(自增)運算子的優先順序要高於||(邏輯或),所以要先進性自增(++)運算,也就是++a,此時a=1,
然後輪到||運算子了,邏輯或是雙目運算子,它的規則是如果第一個運算元是非0,那麼整個的運算結果就是真(非0),也就是不會進行第二個運算元的運算,即++b是不會參與運算的,此時b還是5.
然後再執行,a+b,基於上面兩步,那麼a+b=1+5=6over,希望你明白了。
已知inta=1,b=2;表示式!(a+b)-a&&b+2×4的值,表示式!(a-b)的值?求詳細
13樓:金色潛鳥
!(a+b)- a && b+2*4 按運算子優來
先律和結合律,可寫為自
:(!(a+b)- a) && (b+2*4)
由於 int a=1,b=2; 所以bai !(a+b) = !(1+2) = !3 = 0. 0-a= -1 ( 非0 為真du)。
(b+2*4) = 2+8 = 10 也為真。 && 是與運算zhi,真真dao得真。
printf("%d\n",(!(a+b)-a && b+2*4)); 輸出 1。
後面問的 !(a-b) = ! (-1) = 0; 因為 非0的值都是真,-1 不是0 ,所以 -1 也是真。
真求反,得非,非就是 0。 printf("%d\n", !(a-b)); 輸出0。
c語言 假定int a=3,b=2 c=1 表示式(c==a>c)+(a/b/2.0)的值是多少
14樓:匿名使用者
分析:首先(c==a>c):右結合。因為c=1,a=3,因此,a>c返回1,c==1返回1
然後,a/b/2.0,左結合。a/b,結果商為1,1/2.0的結果是0.5,1+0.5=1.5
最終結果1.5
15樓:匿名使用者
可以寫程式執行一下
#include"stdio.h"
main()
執行一下是1.500000
c語言中有一道題目:已知"int a=4,b=5,c;",則執行表示式"c=a=a>b後變數a的值為( ) a 0 b 1 c 4 d 5
16樓:匿名使用者
這個涉及到c語言的單目運算子優先順序與結合性的知識:
62616964757a686964616fe59b9ee7ad9431333330356165
優先順序:
在表示式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算子優先順序相同時,則按運算子的結合性所規定的結合方向處理。
結合性:
c語言中各運算子的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算子的結合性是自左至右,即先左後右。如有表示式x-y+z 則y 應先與“-”號結合,執行x-y 運算,然後再執行+z 的運算。
這種自左至右的結合 方向就稱為“左結合性”。而自右至左的結合方向稱為“右結合性”。
在你的問題中,"="在表示式中是賦值運算子,而在c語言中,賦值運算子是典型的右結合性運算子。如x=y=z,由於“=”的右結合性,應先執行y=z 再執行x=(y=z)運算。
所以,本例就是先計算雙目運算子“>”:a>b,因為a=4,b=5,a是小於b的,所以式子計算就變成了c = a = 0,然後再計算a = 0(即a = (a > b)),最後式子就是c = 0, 所以答案選a
具體運算子優先順序和結核性請參考:
17樓:0冷雨
答案是a;因為a=a>b意思為把波爾值a>b賦值給a,因為a大於b,a>b等於0,所以a為0.望採納~
18樓:匿名使用者
a, a=0
= 是由du右向zhi左運算的,
a>b值為daofalse,值為0
所以c=a=0
另外也可以專寫程式屬驗證:
#include
int main(void)
正規表示式ddsw0,正規表示式 d d s w 0 9 d d s w 這兩個的區別是什麼呢?
亂紅齋 一個匹配有符號數,另一個匹配有符號數或無符號數。正規表示式,又稱規則表示式,是電腦科學的一個概念,這個概念最初是由unix中的工具軟體普及開的。正則表通常被用來檢索 替換那些符合某個模式 規則 的文字。正則引擎主要分為dfa nfa兩大類。許多程式設計語言都支援利用正規表示式進行字串操作。在...
C語言中,若有int a 5則逗號表示式a 2 6,a 3,a 5的值是
風雷九州 沒錯,就是12。號優先順序高於,號表示式,要計算 賦值 直接就是a 2 6 12了,後面那些a 3,a 5什麼的都沒用 我認為是17,因為這是一個逗號表示式,裡面有2個逗號,3個式子!逗號表示式的值,以最後一個式子的值為值,也就是a 5。但是他是從前往後依次做算的,運算第一個式子後,a是1...
若有定義 int a則表示式a a的值為9請高手說明下這個過程
倒黴熊 二維陣列是按行儲存的也就是如下這樣 a 0 0 a 0 1 a 0 2 a 0 3 a 1 0 a 1 1 a 1 2 a 1 3 a 2 0 a 2 1 a 2 2 a 2 3 而a表示的就是a 0 0 所在的地址。所以 a 2 1 a的值為9。 陽光上的橋 請你在草稿紙上畫一個三行 四列...