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語言中有,C語言中有printf 3 0f f6 1f n , fahr,celsius 其中 是什麼意思?
printf 3.0f f6.1f n fahr,celsius 3.0f 的意思是用3位浮點型數來輸出變數fahr的值 小數位為零 f6.1f n 的意思是用6位小數點為1位的浮點型數來輸出變數celsius的值.其中的小數點前後的兩位數分別表示要輸出變數的總位數和它的小數位數。 格式說明的字首 ...
在C語言中 設a 3,b 4,c 5請問大師表示式 a cb 和表示式 a cb有什麼區別該如何去求值
隨心e談 a c b 等價於 a c b a c b 等價於 a c b結合性是盡可能地跟前面的結合 所以有 a c b先算前置的,再算表示式的,再算後置的。a c b a a 1 b b 1 a c b 這就是表示式 a c b 的值 a c b a a 1 a c b 這就是表示式 a c b的...
請問c語言中的buf一般指什麼,請問C語言中的buf一般指什麼
吉祥二進位制 buf是英文buffer的縮寫,意思是緩衝區,它本質上就是一段儲存資料的記憶體。1 在c語言程式設計中一般用陣列來表示乙個緩衝區。如下 char buf 256 定義乙個陣列作為緩衝區。scanf s buf 向緩衝區中輸入資料printf s buf 輸出緩衝區的內容2 c語言編譯器...