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型別佔的記憶體大小,在一般系...