在c語言中fora0,b0A3b5ab中表示式是什麼

2021-03-04 01:01:31 字數 6971 閱讀 1391

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。這些數值的...