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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

為什么一個(gè)變量與許多值的不相等檢查總是返回true?我有一個(gè)變量v在我的節(jié)目里,它可能需要任何值集合中的值。"a", "b", "c", ..., "z"我的目標(biāo)是只在以下情況下執(zhí)行一些語(yǔ)句v不是"x", "y",或"z".我試過(guò)了對(duì)于類(lèi)C語(yǔ)言(其中相等運(yùn)算符比較實(shí)際字符串值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"}用于類(lèi)似PASCAL的語(yǔ)言(例如: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)的語(yǔ)句總是被執(zhí)行..我做錯(cuò)什么了嗎?
查看完整描述

3 回答

?
炎炎設(shè)計(jì)

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

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

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

問(wèn)題

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

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

  • 什么時(shí)候v = "x",

    v != "x""x" != "x",也就是假的.?
    v != "y""x" != "y",也就是千真萬(wàn)確.?
    v != "z""x" != "y",也就是千真萬(wàn)確.

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

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

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

    true || false || true,也就是千真萬(wàn)確.

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

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

    true || true || false,也就是千真萬(wàn)確.

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

或者,考慮一下真值表:

???????│?????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

如您所見(jiàn),您的邏輯表達(dá)式評(píng)估為true.

您要做的是,找到一個(gè)計(jì)算為true什么時(shí)候

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

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

  • 用于C類(lèi)語(yǔ)言(如。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"}
  • 類(lèi)帕斯卡語(yǔ)言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;

德摩根定律

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

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

意義

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

這使得邏輯更加明顯。

特定語(yǔ)言

有些語(yǔ)言有特定的結(jié)構(gòu)來(lái)測(cè)試集合中的成員資格,或者可以使用數(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)


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

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

我想我會(huì)為Bourneshell腳本提供一個(gè)答案,因?yàn)檎Z(yǔ)法有點(diǎn)奇怪。

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

####?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等也有[[有點(diǎn)不那么煩人。

####?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)在每個(gè)令牌周?chē)锌崭竦囊?,這是許多初學(xué)者忽略的事情(也就是說(shuō),您不能說(shuō)if[[$v$v!='y'在命令和運(yùn)算符周?chē)鷽](méi)有空格),以及表觀引用的可選性。不引用值通常不是句法錯(cuò)誤,但它會(huì)導(dǎo)致嚴(yán)重的不期望。語(yǔ)義化如果你沒(méi)有引用一個(gè)需要被引用的價(jià)值,那就麻煩了。

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

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

別忘了那個(gè)可靠的老人case這是非常自然的說(shuō)法,并可移植到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

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



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

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

對(duì)于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

對(duì)于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

對(duì)于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ā)揮你的想象力,只需寫(xiě)出你更喜歡的!


查看完整回答
反對(duì) 回復(fù) 2019-06-03
  • 3 回答
  • 0 關(guān)注
  • 802 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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