C語言中設int a3,0a ,請問a值是多少

2021-08-25 04:00:39 字數 3426 閱讀 1019

1樓:匿名使用者

你說得對,++是優先於&&,所以可以看成是0&&4,但0&&任何數字結果都是0,所以最後a還是0

2樓:windy天命風流

&&運算子就是先判斷左邊是否非零,如果非零在判斷右邊。題目左邊為零,右邊不做運算和判斷,這種問題叫「短路」。

3樓:嬿暉

在計算的時候,當『&&』運算前半部分判斷為false時,不會執行後半部分,因此(++a)不執行,a不變;『||』同理,當前半部分判斷為true時,不會執行後半部分。

雖然++優先順序更高,但應該是需要時才進行計算。

4樓:匿名使用者

優先順序和結合性與運算順序無關,優先順序為了防止表示式詞法分析時出現歧義,c語言本身沒有規定求值順序,只規定了在順序點前表示式必須***發生,&&運算子就是順序點之一

如,表示式a+b*c/d,由於根據優先順序/結合性可知,等效於a+((b*c)/d),而不會產生((a+b)*c)/d之類的歧義

由於數學中的+-*/等運算本身不會對運算元產生***,所以實際上只要確定了優先順序,計算順序不影響求值結果

但是在程式語言中存在會產生***運算子,如自增自減等運算,所以才會產生差別

c語言中,int a=3,b=0; !a&&a+b&&a++; 中,!a具體定義是什麼?為什麼得出來是0?

5樓:匿名使用者

! 是非運算, 參與

運算的量是真,結果為假 ,參與運算的量為假,結果為真c語言版規定 1為真, 0為假 , 但對於變數,權非零即為真,0為假 所以 a=3 ,!a表示假!a&&a+b&&a++; 這個整體是與運算, 有一個為假 ,整個結果就為假

6樓:pprain_水杯

「!」在c語言中是邏輯非的意思,即為0或者是非0,題中a=3,所以!a就是0了

在c語言中,int a=9;表示式(++a*2/3)的值為多少?求大神解釋一下

7樓:天雨下凡

開始時a的值為9,然後語句++a*2/3,先執行++a,此時a的值為10(因為是前置),然後a*2/3=20/3=6(因為整數除是不進位取整的)

++a*2/3等價於(++a)*2/3

8樓:匿名使用者

++a,++在前,那麼是先做自增,然後取a的值做運算,所以其結果為(9+1)*2/3=6.666666667(四捨五入)

c語言求表示式值的問題 寫出下面各邏輯表示式的值,設int a=3, b=6 ,c=8. !(a>b)&&!c||1 ____ 10

9樓:春雨_潤物

運算子優先順序與結合性問題。一步一步來就行了。

優先順序 運算子 名稱或含義 使用形式 結合方向 說明

1 陣列下標 陣列名[常量表示式] 左到右

() 圓括號 (表示式)/函式名(形參表)

. 成員選擇(物件) 物件.成員名

-> 成員選擇(指標) 物件指標->成員名

2 - 負號運算子 -表示式 右到左 單目運算子

(型別) 強制型別轉換 (資料型別)表示式

++ 自增運算子 ++變數名/變數名++ 單目運算子

-- 自減運算子 --變數名/變數名-- 單目運算子

* 取值運算子 *指標變數 單目運算子

& 取地址運算子 &變數名 單目運算子

! 邏輯非運算子 !表示式 單目運算子

~ 按位取反運算子 ~表示式 單目運算子

sizeof 長度運算子 sizeof(表示式)

3 / 除 表示式/表示式 左到右 雙目運算子

* 乘 表示式*表示式 雙目運算子

% 餘數(取模) 整型表示式/整型表示式 雙目運算子

4 + 加 表示式+表示式 左到右 雙目運算子

- 減 表示式-表示式 雙目運算子

5 << 左移 變數《表示式 左到右 雙目運算子

>> 右移 變數》表示式 雙目運算子

6 > 大於 表示式》表示式 左到右 雙目運算子

>= 大於等於 表示式》=表示式 雙目運算子

< 小於 表示式《表示式 雙目運算子

<= 小於等於 表示式<=表示式 雙目運算子

7 == 等於 表示式==表示式 左到右 雙目運算子

!= 不等於 表示式!= 表示式 雙目運算子

8 & 按位與 表示式&表示式 左到右 雙目運算子

9 ^ 按位異或 表示式^表示式 左到右 雙目運算子

10 | 按位或 表示式|表示式 左到右 雙目運算子

11 && 邏輯與 表示式&&表示式 左到右 雙目運算子

12 || 邏輯或 表示式||表示式 左到右 雙目運算子

13 ?: 條件運算子 表示式1? 表示式2: 表示式3 右到左 三目運算子

14 = 賦值運算子 變數=表示式 右到左

/= 除後賦值 變數/=表示式

*= 乘後賦值 變數*=表示式

%= 取模後賦值 變數%=表示式

+= 加後賦值 變數+=表示式

-= 減後賦值 變數-=表示式

<<= 左移後賦值 變數<<=表示式

>>= 右移後賦值 變數》=表示式

&= 按位與後賦值 變數&=表示式

^= 按位異或後賦值 變數^=表示式

|= 按位或後賦值 變數|=表示式

15 , 逗號運算子 表示式,表示式,… 左到右 從左向右順序運算

10樓:thing不辨不明

c語言把真定義為絕對的肯定

任何不為零的都為真

所有為零的都為假

對於字元如果它的ascii碼不為零,字元就是真,也就是說字元中只有'/0'為假

條件成立為真

如 !(a+b)-c&&b+c/2

a+b>0 (a+b)就為真!(a+b)為假就是!(a+b)=0c為真b為真,則c&&b為真c&&b=1

!(a+b)-c&&b+c/2=-1+4=3

11樓:匿名使用者

這裡的字母是變數,也就是這些字母都是有數值的。

然後再跟數字做各種操作。!是取反的操作

最後判斷式子的結果是不是0,如果是0則為假;非0則為真。

c語言中有inta012而printfda為什麼輸出

int a 0 表示a是八進位制bai整數,所以du012就是八進位制12 即12q d是十zhi進dao制輸出,回那麼八轉十,12q 1x8 2 10d int a 025 025 q 21 d q表示八答進位制,d表示十進位制 int a 0xx 是表示八進位制,輸入時是顯示十進位制的,012轉...

C語言中的chara和inta所佔位元組是一樣嗎

不一樣。char佔一個位元組,那 麼含有6個char的陣列,char a 6 就佔 1x6 6 個位元組。而int則一般佔4個位元組 就假回設佔4個自己 那麼含有答6個int的陣列,int a 6 就佔 4x6 24 個位元組。不一樣啊 前者佔用6位元組 後者佔用24位元組 因為一個字元型 一個整形...

C語言中的char a和int a所佔位元組一樣嗎

不一樣。type a 6 佔的空間是 sizeof type 6 所以 char a 6 必然是6位元組。而int a 6 根據平臺不同,可能是12位元組或者24位元組。char a 6 表示一個有6個char型別copy元素組成的陣列,所以佔用記憶體為 6 一個char型別佔的記憶體大小,在一般系...