第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么一個變量與許多值的不相等檢查總是返回true?

為什么一個變量與許多值的不相等檢查總是返回true?

為什么一個變量與許多值的不相等檢查總是返回true?我有一個變量v在我的節(jié)目里,它可能需要任何值集合中的值。"a", "b", "c", ..., "z"我的目標(biāo)是只在以下情況下執(zhí)行一些語句v不是"x", "y",或"z".我試過了對于類C語言(其中相等運(yùn)算符比較實際字符串值C#, JavaScript, PHP)if (v != "x" || v != "y" || v != "z"){     // the statements I want to be executed     // if v is neither "x", nor "y", nor "z"}用于類似PASCAL的語言(例如:plsql)IF (v != 'x' OR v != 'y' OR v != 'z') THEN     -- the statements I want to be executed     -- if v is neither "x", nor "y", nor "z"END IF;if條件內(nèi)的語句總是被執(zhí)行..我做錯什么了嗎?
查看完整描述

3 回答

?
炎炎設(shè)計

TA貢獻(xiàn)1808條經(jīng)驗 獲得超4個贊

使用&&/AND/and,不是||/OR/or:

v?!=?"x"?&&?v?!=?"y"?&&?v?!=?"z"

問題

如果if塊,則為if塊的條件。總是評估為true..邏輯表達(dá)式一定是錯的。

讓我們考慮一下v != "x" || v != "y" || v != "z"的每一個值v.

  • 什么時候v = "x",

    v != "x""x" != "x",也就是假的.?
    v != "y""x" != "y",也就是千真萬確.?
    v != "z""x" != "y",也就是千真萬確.

    表達(dá)式的計算結(jié)果為false || true || true,也就是千真萬確.

  • 什么時候v = "y",表達(dá)式變成

    "y"?!=?"x"?||?"y"?!=?"y"?||?"y"?!=?"z"

    true || false || true,也就是千真萬確.

  • 什么時候v = "z",表達(dá)式變成

    "z"?!=?"x"?||?"z"?!=?"y"?||?"z"?!=?"z"

    true || true || false,也就是千真萬確.

  • 的任何其他價值v,表達(dá)式的計算結(jié)果為true || true || true,也就是千真萬確.

或者,考慮一下真值表:

???????│?????A??????????B??????????C??????│
??v????│??v?!=?"x"???v?!=?"y"???v?!=?"z"??│??A?||?B?||?C
───────┼──────────────────────────────────┼──────────────
?"x"???│????false??????true???????true????│?????true
?"y"???│????true???????false??????true????│?????true
?"z"???│????true???????true???????false???│?????true
other??│????true???????true???????true????│?????true

如您所見,您的邏輯表達(dá)式評估為true.

您要做的是,找到一個計算為true什么時候

(v is not "x")and(v is not "y")and(v is not "z").

正確的結(jié)構(gòu)是,

  • 用于C類語言(如。C#,?JavaScript-(可能需要嚴(yán)格的相等操作符!==),?PHP)

    if?(v?!=?"x"?&&?v?!=?"y"?&&?v?!=?"z"){
    ????//?the?statements?I?want?to?be?executed
    ????//?if?v?is?neither?"x",?nor?"y",?nor?"z"}
  • 類帕斯卡語言plsql

    IF?(v?!=?'x'?AND?v?!=?'y'?AND?v?!=?'z')?THEN
    ????--?the?statements?I?want?to?be?executed
    ????--?if?v?is?neither?"x",?nor?"y",?nor?"z"END?IF;

德摩根定律

通過德摩根定律,表達(dá)式也可以重寫為(使用C語法)

!(v?==?"x"?||?v?==?"y"?||?v?==?"z")

意義

not((v is "x")or(v is "y")or(v is "z")).

這使得邏輯更加明顯。

特定語言

有些語言有特定的結(jié)構(gòu)來測試集合中的成員資格,或者可以使用數(shù)組/列表操作。

  • SQL:?v NOT IN ('x', 'y', 'z')

  • JavaScript:?["x", "y", "z"].indexOf(v) == -1

  • Python:?v not in {"x", "y", "z"}

  • 爪哇:?Arrays.asList("x", "y", "z").contains(v)

  • 爪哇-9(及以上):Set.of("x", "y", "z").contains(v)


查看完整回答
反對 回復(fù) 2019-06-03
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗 獲得超8個贊

我想我會為Bourneshell腳本提供一個答案,因為語法有點奇怪。

傳統(tǒng)/POSIXsh字符串相等測試是[命令(是的,這是一個不同的命令名!)在報價等方面有一些令人討厭的要求。

####?WRONG
if?[?"$v"?!=?'x'?]?||?[?"$v"?!=?'y']?||?[?"$v"?!=?'z'?];?then
????:?some?code?which?should?happen?when?$v?is?not?'x'?or?'y'?or?'z'
fi

現(xiàn)代貝殼如Ksh,Bash,Zsh等也有[[有點不那么煩人。

####?STILL?WRONG
if?[[?$v?!=?'x'?||?$v?!=?'y'?||?$v?!=?'z'?]];?then
????:??some?code?which?should?happen?when?$v?is?not?'x'?or?'y'?or?'z'
fi

我們應(yīng)該強(qiáng)調(diào)在每個令牌周圍有空格的要求,這是許多初學(xué)者忽略的事情(也就是說,您不能說if[[$v$v!='y'在命令和運(yùn)算符周圍沒有空格),以及表觀引用的可選性。不引用值通常不是句法錯誤,但它會導(dǎo)致嚴(yán)重的不期望。語義化如果你沒有引用一個需要被引用的價值,那就麻煩了。

這里最明顯的解決辦法是使用&&而不是||但你也應(yīng)該注意到[[通常對正則表達(dá)式的運(yùn)動支持,所以您可以這樣說

if?[[?!?$v?=~?^(x|y|z)$?]];?then
????:?yeah
fi

別忘了那個可靠的老人case這是非常自然的說法,并可移植到1970年代后期:

case?$v?in
????x?|?y?|?z)
???????;;?#?don't?actually?do?anything?in?this?switch
????*)?#?anything?else,?we?fall?through?to?this?switch
???????yeah
???????some?more?yeah
???????in?fact,?lots?of?yeah;;
?esac

拖著的雙分號起初會導(dǎo)致動脈瘤,但你很快就會恢復(fù),學(xué)會欣賞,甚至喜歡它們。POSIX允許在匹配表達(dá)式之前放置一個括號,這樣就沒有未配對的右括號,但這種用法并不常見。



查看完整回答
反對 回復(fù) 2019-06-03
?
慕無忌1623718

TA貢獻(xiàn)1744條經(jīng)驗 獲得超4個贊

對于PHP,您可以使用這樣的東西:


if(strpos('xyz',$v[0])===false)//example 1

//strpos returns false when the letter isn't in the string

//returns the position (0 based) of the substring

//we must use a strict comparison to see if it isn't in the substring


if(!in_array($v[0],array('x','y','z')))//example 2


//example 3

$out=array('x'=>1,'y'=>1,'z'=>1); //create an array

if(!$out[$v[0]]) //check if it's not 1


if(!preg_match('/^[xyz]$/',$v))//example 4, using regex


if(str_replace(array('x','y','z'),'',$v[0]))//example 5



if(trim($v[0],'xyz'))//example 6

對于Javascript:


if(~'xyz'.search(v[0]))//example 1(.indexOf() works too)


if(!(v[0] in {x:0,y:0,z:0}))//example 2


if(~['x','y','z'].indexOf(v[0]))//example 3, incompatible with older browsers.


if(!/^[xyz]$/.match(v))//example 4


if(v.replace(/^[xyz]$/))//example 5

對于MySQL:


Select not locate(@v,'xyz'); -- example 1


select @v not in ('x','y','z'); -- example 2


-- repetition of the same pattern for the others

C組:


if(!strstr('xyz',v))//example 1, untested

有更多的方法,我就是太懶了。


發(fā)揮你的想象力,只需寫出你更喜歡的!


查看完整回答
反對 回復(fù) 2019-06-03
  • 3 回答
  • 0 關(guān)注
  • 778 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號