邏輯表示式的核心是邏輯運算子。
邏輯運算子有三個:
①「||」,注意,沒有雙引號,意思是 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...