Java程式分析題一

2021-08-01 15:45:45 字數 1044 閱讀 3585

int x = 1,y = 1;

if(x++==2 & ++y==2)

system.out.println("x="+x+",y="+y);

原以為很簡單,我得出的結果是x=7,y=2。但是在編譯器下一跑才知道自己錯了。首先最重要的乙個問題就是題目判斷條件中的符號是』&』運算子,而不是」&&」,相信會有不少朋友和我一樣馬大哈了。看清楚這個分析起來就好多了,因為x++==2值為false,++y==2的值為true,true&false=false,所以判斷條件不通過,所以最後結果為x=2,y=2。

再來看下面這一題:

int x = 1,y = 1;

if(x++==2 && ++y==2)

system.out.println("x="+x+",y="+y);

在第一題的基礎上,本題看上去可能要簡單了。於是我心中一想,便以為答案是x=2,y=2,相信不少讀者會和我一樣,有著這樣的想法,但是如果這是測試題的話,我得告訴你,很抱歉,you are wrong! 那是因為在使用邏輯操作符時,會遇到一種「短路現象」。即一旦能夠明確無誤的確定整個表示式的值,就不再計算表示式餘下部分了。在本題中,由於x++==2的值為false,對於「&&」來說,無論「++y==2」的值如何,整個表示式的值依然為false,所以程式為提公升效能,便不在計算。所以本題的判斷條件和」x++==2」的效果是一樣的。所以本題結果為x=2,y=1;

再來看下面這一題:

int x = 1,y = 1;

if(x++==1 | ++y==1)

system.out.println("x="+x+",y="+y);

基於前面的描述,可以很輕鬆的判斷出本題結果為x=7,y=2

還有一道題如下:

int x = 1,y = 1;

if(x++==1 || ++y==1)

system.out.println("x="+x+",y="+y);

/*output:

x=7,y=1

*/

邏輯分析題彙總(一)

1.有一對兔子,從出生後第 3 個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?程式分析 兔子的規律為數列 1 1,2,3,5,8,13,21,34,表示了一種動植物數量的正常增長的數量變化 月份 1 2 3 4 5 6 7 8 9 10 ...

CTF資料分析題 A記錄

原題 資料報 a記錄,那就是對dns的記錄進行過濾,找第一條a記錄。root kali aircrack ng root desktop shipin.cap 簡單分析這個包 aircrack ng root desktop shipin.cap w zidian.txt 通過字典,對包進行破解分析...

多型中的題目分析題

多型 polymorphic 概述 事物存在的多種形態 多型的前提 a.要有繼承關係 b.要有方法重寫 c.要有父類引用指向子類物件 多型中的成員訪問特點之成員變數 編譯看左邊 父類 執行看左邊 父類 多型中的成員訪問特點之成員方法 編譯看左邊 父類 執行看右邊 子類 動態性 分析多型中的題目 a程...