java中if x1 yz1 怎麼理解

時間 2021-08-30 10:51:32

1樓:

因為&&的級別比||高,所以我們先做x--==1&&y++==1,&&左邊部分的意思是x的值是否等於1,然後x的值再減一,右邊的意思是y的值是否等於1,然後y再加一,如果兩者都成立,這個表示式的值為true,否則為false,z++==1的意思是z的值是否為1,然後z加1,如果為1,則表示式的值為true,否則為false,因為是或,所以如果這個兩個表示式中只要有一個為真,就可以執行if後面的語句,如果兩個都為假,則不能滿足

2樓:親親呀我的寶貝

看看運算子的優先順序,就可以解決了。還不知道就賦值測試一下。

3樓:匿名使用者

如果(x1等於1並且y等於1,或者z等於1)&&優先順序別大於||

因為x++的意思是變數值先參加運算後變數加1所以接著x減1z加1y加1

4樓:通訊偉雄

當x自減等於一和y自加等於一成立,或者z自加等於一成立是執行程式

5樓:匿名使用者

就是比較:

如果 (x等於1 並且 y==1 )或者(z==1)然後無論次條件成立與否

對x減一, y,z各+1

int x=1,y=1,z=1; if (x--==1&&y++==1||z++==1) system.out.println("x="+x+",y="+y+",z="+z); } }

6樓:匿名使用者

x=0,y=2,z=1

(x--==1&&y++==1||z++==1) 相當於((x--==1&&y++==1)||z++==1) )

x--==1 為true 執行後 x=0雙與 && 是前面的條件如果專為true,後面的條件也要判斷一次,所以y++==1也執行了屬

y++==1 為true 執行後 y=2兩個都為true,那麼(x--==1&&y++==1)為true,而雙或 || 是前面的條件如果為true,後面的條件就不再判斷,結果肯定是true。

所以z++==1並沒有執行,z的值不變。

public class test { public static void main(string args[]) { int x=1,y=1,z=1; if (x--==1&&y++==1||z

7樓:匿名使用者

答案是:x=0,y=2,z=1

先x--==1&&y++==1

x--==1結果是true x的值是0,

y++==1結果是true y的值是2,

&&這個符號如果左邊為false,就不用計算右邊的表示式,如果是true,就要計算右邊的式子,那麼x=0,y=2,x--==1&&y++==1的結果就是true,

||這個式子左邊為true那麼右邊的就不計算,所以z++==1不計算,z還是等於1.

8樓:匿名使用者

x-- == 1 相當於 先執行x == 1 ; 後執行x = x + 1; 因此 x-- == 1 返回true

&& 短路或 如果&&左邊錯誤, 則返回false不判斷&&右邊

x-- == 1 && y++ == 1返回左右都為true則為true

|| 短路於 如果|| 左邊為真, 則返回true不判斷|| 右邊**

因為x-- == 1 && y++ == 1返回true則不判斷z++ == 1是否為true

因此結果為x=0,y=2,z=1;

9樓:匿名使用者

c static void main(string args) }

方法要放在類裡面,方法的實現要放在方法裡面

10樓:匿名使用者

這個完全是應試考試的問題,完全沒必要拿出來討論。。。。

實際中如果誰這樣寫**那就不是一個好的程式設計習慣,多用括號,省得自己在那想,這個問題不知道也沒關係,考試考這題直接

// 出這題的有真的寫過程式沒?

c語言 int x=3,y=4,z=5; 那 !((x

11樓:

答案是1。

涉及到的復運算制符:

! () + - && /

運算子優先順序為

bai:() !du / + - &&

運算過程:

x=3,y=4,z=5

!(x+y)+z-1&&y+z/2

!(3+4)+5-1&&4+5/2

所以表達zhi式計dao算步驟為

!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2!7為 0

-> 0+5-1&&4+5/2

5/2 整數除整數得整數 2

-> 0+5-1&&4+2

-> 4&&6

邏輯運算 &&

擴充套件資料c語言運算子的優先順序:

如果同一優先順序的運算子,結合次序由結合方向所決定。

12樓:憶夜雨

根據來運算子的優先順序和結合性來看源

!((x)為

baitrue,!z為false,

然後(x相&&,結du果為false,

然後剛才的zhifalse和1相||,結果是true,整體取反,最終結果是false。

好吧。。。看到最後發現不用算,||那有個1,必為true,然dao後取反,是false。。。

13樓:匿名使用者

宣告int型別變數x.y.並初始化先判斷

14樓:匿名使用者

!是非&&是與

|| 是或

根據運算子號的優先順序!>&&>||

先運算x

然後運算&& 、其結果運算|| ,可以理解為(x

c語言:!(x+y)+z-1 && y+z/2 跪求高手解答 不勝感激。 謝謝!!

15樓:我是果瘋

算數運算子優先於邏輯運算子。

先算(x+y),再算(x+y)-z,再算(x+y)-z-1。

若(x+y)-z-1的結果為非零數,則!(x+y)-z-1的值為0。

(x+y)-z-1的值為0,則!(x+y)-z-1的值為1。

先算z/2,再算y+z/2。

若y+z/2的值為0,那麼整個表示式的值為0。

若左邊(x+y)-z-1的結果為1 ,y+z/2的結果非零值,那麼整個表示式的結果為1。

其他情況,&&左右兩邊出現一個零,則整個表示式的結果為0。

16樓:匿名使用者

這個語句大部分是用在if()裡面當作條件表示式的,因為c語言沒有真正意義的bool型別,而是定義了 0 為 false, 非 0 為true,所以條件表示式可以是算術表示式

先計算 (x+y) 再取 非 (這裡注意,任何非零的值取非,結果是0, 但是 0 取非,值為1,這是c語言定義的), 值再 +z -1 , 結果如果為零,則不 執行 && 後面的 y+z/2, 因為 0&&任意值 都是 0 即為 false,只有在 && 前面為 true的時候才會去執行 && 後面的語句

這裡考查的是 運算子的優先順序,以及 && 的細節,如果是考試中的話可能會出現 x++ && x++ 或者 x++ || x++ 然後問x的值 之類問題

17樓:匿名使用者

參考人家的,這種題知道運算優先順序就萬事ok了

1級優先順序 左結合

() 圓括號

下標運算子

-> 指向結構體成員運算子

. 結構體成員運算子

2級優先順序 右結合

! 邏輯非運算子

~ 按位取反運算子

++ 字首增量運算子

-- 字首增量運算子

+ 正號運算子

- 負號運算子

(型別) 型別轉換運算子

* 指標運算子

& 地址與運算子

sizeof 長度運算子

3級優先順序 左結合

* 乘法運算子

/ 除法運算子

% 取餘運算子

4級優先順序 左結合

+ 加法運算子

- 減法運算子

5級優先順序 左結合

<< 左移運算子

>> 右移運算子

6級優先順序 左結合

<、<=、>、>= 關係運算子

7級優先順序 左結合

== 等於運算子

!= 不等於運算子

8級優先順序 左結合

& 按位與運算子

9級優先順序 左結合

^ 按位異或運算子

10級優先順序 左結合

| 按位或運算子

11級優先順序 左結合

&& 邏輯與運算子

12級優先順序 左結合

|| 邏輯或運算子

13級優先順序 右結合

? : 條件運算子

14級優先順序 右結合

= += -= *= /= %= &= ^= |= <<= >>= 全為賦值運算子

15級優先順序 左結合

, 逗號運算子

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。其它的都是從左至右結合。

具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式相關,與陣列相關,而->及.是取結構成員。

其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。

另外在c語言裡 沒有前置後置之分 因為++ -- 是右結合所以 右側優先運算 表現為 "後置優先順序比較高" 的假象 前置和後置的區分是因為運算子過載而後加入c++的

接下來是算術運算子,*、/、%的優先順序當然比+、-高了。

移位運算子緊隨其後。

其次的關係運算子中,< <= > >=要比 == !=高一個級別,不大好理解。

所有的邏輯操作符都具有不同的優先順序(單目運算子出外,!和~)

邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。

跟在其後的&&比||高。

接下來的是條件運算子,賦值運算子及逗號運算子。

在c語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。

&&、| |都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊表示式b就不再判斷。

在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。

賦值表示式則規定先對右邊的表示式求值,因此使 a = b = c = 6;成為可能。

18樓:匿名使用者

x,y,z,的數值是多少啊。

19樓:匿名使用者

!(((x + y )+ z - 1)&& (y + (z / 2)))

c語言:已有定義int x=3,y=4,z=5;則表示式 !(x+y)+z-1&&y+z/2的值是?

20樓:

答案是1。

涉及到的運算子: ! () + - && /運算子優先順序為:() ! / + - &&運算過程:

x=3,y=4,z=5

!(x+y)+z-1&&y+z/2

!(3+4)+5-1&&4+5/2

所以表示式計算步驟為

!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2!7為 0

-> 0+5-1&&4+5/2

5/2 整數除整數得整數 2

-> 0+5-1&&4+2

-> 4&&6

邏輯運算 &&

擴充套件資料c語言運算子的優先順序:

如果同一優先順序的運算子,結合次序由結合方向所決定。

21樓:匿名使用者

只是等於1的,我是經過turbo c2.0編譯過的,答案應該沒什麼問題的,程式是:

main()

答案為什麼會等於1呢?那是因為運算級別的問題,根據運算級別,實現算括號裡面的先,所以程式就變成!7+z-1&&y+z/2;

然後就算!運算,由於7是大於1的,也就是真,所以!真就是假,也就是0,所以函式就變成0+z-1&&y+z/2;

然後再算除號的,由於你這裡兩個都是整形的,所以小數點後面的數忽略,所以就變成0+z-1&&y+2;

接著計算加減運算,也就是變成4&&6;

因為4和6都是大於1的數,所以就是真,由於&&兩邊都是真的話,輸出的就是真,所以結果就是1。

要是還有什麼不明白的話,就mm我吧!嘻嘻~~~~~~

數學單位“1”原理,數學中的單位1怎麼理解

正確找準單位 1 是解答分數 百分數 應用題的關鍵,也是教師教學此類應用題的重點和難點。每一道分數應用題中總是有關鍵句 含有分率的句子 如何從關鍵句中找準單位 1 我覺得可以從以下這些方面進行考慮。一 部分數和總數 在同一整體中,部分數和總數作比較關係時,部分數通常作為比較量,而總數則作為標準量,那...

中的字型中的白色文字1怎麼調出來

把word背景設定成有色的就看見了,方法 選單 格式 背景 選擇一種背景。如果想只選擇白色字元,可以用查詢功能 在查詢中選擇格式 字型 白色 若要選出白色字型刪掉或統一設定為其它自己想要的,可以用替換,參照上面設定一下,點全部替換。若要刪掉在替換為欄目中什麼都不填 word中,字型的顏色為 深色 和...

中怎麼插入帶圈的1,,word中怎麼插入帶圈的1,2,3 。。

分別輸入1 2 3 逐個操作 選單欄 格式 中文版式 帶圈字元 確定。或 選單欄 插入 符號 子集 下拉選 帶括號的字母數字 點選合適的 插入。 蕭蕭一笑一千年 插入 下面選擇 符號 在那裡面可以找到 lisa璦 插入 特殊符號 數字序號 選擇合適的確定即可 插入 特殊符號 數字序號 裡邊就有 直接...