(八十三)邏輯表示式

2021-09-23 23:33:43 字數 4171 閱讀 6314

邏輯表示式的核心是邏輯運算子

邏輯運算子有三個:

①「||」,注意,沒有雙引號,意思是 or 。在||左右兩邊的表示式,只要有乙個成立,那麼這個邏輯表示式的值就是true。只有兩個都不成立,才是false;

②「&&」,同樣沒有雙引號,意思是 and。在&&左右兩邊的表示式,只要有至少乙個不成立,就是false,只有兩個都成立,才是true;

③「!」,沒有雙引號,意思是 not。例如,「==」是等於,而「!=」是不等於(not 等於)。

上**:

#includeint main()

if (a > 1 || b > 10)

if (a > 0 || b > 12)

if (a > 0 || b > 10)

if (a > 1 && b > 12)

if (a > 1 && b > 10)

if (a > 0 && b > 12)

if (a > 0 && b > 10)

if (!(a > 1 && b > 12))

if (!(a > 1 && b > 10))

if (!(a > 0 && b > 12))

if (!(a > 0 && b > 10))

system("pause");

return 0;

}

輸出:

a > 1 || b > 10

a > 0 || b > 12

a > 0 || b > 10

a > 0 && b > 10

!(a > 1 && b > 12)

!(a > 1 && b > 10)

!(a > 0 && b > 12)

請按任意鍵繼續. . .

結論:①從**中可以看出,在第一部分「||」的四個**中,前3個至少有乙個成立,於是輸出了結果;

②在第二部分的「&&」四個**中,只有最後乙個兩個都成立的,才輸出了結果;

③在第三部分加了「!」的「&&」四個**中,我們發現,原本不成立的,輸出了結果,原本成立的,反而不能輸出結果,這就是not作用。

小技巧:

①表示範圍:用&&,

例如1010&&a<20;

也可以用於判斷字元,**:

#includeint main()

else if (a >= 'a'&&a <= 'z')

else if (a >= '0' && a <= '9') //之所以用'0',是因為數字0的ascii值不是0

else

system("pause");

return 0;

}

當輸入小寫字母,則輸出第一句;

輸入大寫字母,則輸出第二句;

輸入數字(注意,若**中不是判斷0~9,那麼判斷的是輸入的第乙個數字),則輸出第三句;

輸入其他,則輸出第四句。

②若是輸入大小寫字母都可以,使用「||」,如**:

#includeint main()

if ('b' == a || 'b' == a)

std::cout << "\n\n";

} system("pause");

return 0;

}

輸出:

請輸入你的性別:

a.男b.女

a你的性別是:男。

請輸入你的性別:

a.男b.女

a你的性別是:男。

請輸入你的性別:

a.男b.女

b你的性別是:女。

請輸入你的性別:

a.男b.女

b你的性別是:女。

請按任意鍵繼續. . .

迴圈4遍是為了測試四種輸入都可以。假如輸入除了a、b、a、b之外的,將無輸出,自動進入下一遍迴圈。

③注意不要使用1010看起沒問題,那麼假如a=30,30顯然不在10~20之間的範圍內。

同樣帶入,方法相同,輸出的還是true,肯定是不對的。

int i = 30;

if (10 < i < 20) 

是能輸出結果10④**,判斷輸入的值是否超出型別限定範圍:

#include#includeusing namespace std;

bool max(double); //至少要用乙個比int型別範圍大的,因為測試的是int型別,假如比int型別範圍小,那麼無論如何,不可能出界了。

//bool型別是因為只需要返回結果是1或者0,也可以用int,然後在函式內部,return 1或者0.

int main()

cout << "你輸入的數值符合要求,是:" << b << endl;

system("pause");

return 0;

}bool max(double a)

else return 1; //不滿足,那麼肯定就是在範圍內了,讓返回1,破for迴圈。

//也可以用a>int_min && a輸出:

請輸入乙個數值:12345678911

你輸入的值過大或者過小了,請重新輸入:1234567891

你輸入的數值符合要求,是:1.23457e+09

請按任意鍵繼續. . .

效果看注釋。原則是,輸入後,判斷一次,超範圍,返回繼續迴圈,不超範圍,離開迴圈,執行下面的。

⑤運算子優先順序:

「||」和「&&」的優先順序,比較低,至少低於關係運算子,例如<、>、==等。

即:a<1 || a>5 表示的意思是a比1小或者比5大。

「&&」同「||」

但是「!」的優先順序很高,超過關係運算子,也超過||和&&

例如:!a<1 || a>5 ,這行**的意思不是!(a<1 || a>5),而是(!a)>1 || a>5,因為比如a是1,!a是false,比如a是0,則!a是true,

**:

#includeusing namespace std;

int main()

//實質上是 a<1 或 a>5

if (!a < 1 || a>5) //實質上是 (!a)<1 ===也就是false <1,或 a>5,前者成立,返回是true

if (!(a < 1 || a>5)) //實質上是a<1或a>5,因為是true,所以輸出false

system("pause");

return 0;

}

輸出:

a = -1

a < 1 || a>5

!a < 1 || a>5

請按任意鍵繼續. . .

注意:假如!a:

如果a是0,被!認為是false,反轉後是true(1);

如果a是1,被認為是true,反轉後是false(0);

然後再計算!a< b:

假如b是2,那麼無論如何,表示式結果true,

如果b是0,那麼無論如何,表示式結果是false;

假如b是1,那麼當a=1時,結果是true;a=0為false。

即!1<1是true,!0<1是false

⑥運算子的替代:

「||」可以用「or」替代;

「&&」可以用「and」替代;

「!」可以用「not」替代;

如**:

#include#include//按照教程說明,只有c語言需要這個標頭檔案,但是c++不需要啊。但實際上如果不加這個,會提示錯誤

int main()

if (a < 5 or a>10)

if (not(a < 1 and a>3))

system("pause");

return 0;

}

輸出:

a = 2

a>1 and a<3

a < 5 or a>10

not(a < 1 and a>3)

請按任意鍵繼續. . .

奇怪之處:按照教程說,c++無需標頭檔案,但是,若不加這個標頭檔案,那麼就無法正常使用and 、or和not了。

Lua程式設計(八十三)

lua是一種安全的語言,這意味著不管用lua寫什麼,也不管寫出來的內容有多麼不正確,lua自身所提供的機制總是能用來理解程式的行為。此外,程式中的錯誤 error 也是通過lua語言的機制來檢測和解釋的。與之相對的是,許多c語言 中的錯誤只能從底層硬體的角度來解釋 例如,把異常位置作為指令位址給出 ...

NOIP模擬 八十三

csp後第一次模擬,好像以後都和外校聯考了。60 90 25 30 菜。t1t2被大力卡常,t3t4只會暴力。一眼線段樹 題,然後看到5000000,貌似可以帶個 log,於是就沒多想。其實掃一遍也挺顯然的。垃圾oj跑個 n 的5000000跑了一秒六,怕不是上世紀五十年代的剩餘產品?include...

邏輯表示式

1.比較表示式只能描述1個條件 2.邏輯表示式可以描述多個條件,並且使用邏輯運算子來指定多個條件之間的關係 符號含義 與 ll或 非 邏輯與表示式 邏輯與 由 連線起來的邏輯表示式,只要當兩邊的條件都成立的時候,整個邏輯表示式猜成立,只要有一邊的條件不成立,那麼整個邏輯表示式都不成立 表示式結果 1...