C++中if語句和邏輯或的用法
能這樣用,這樣用編譯器也不會報錯,但是如你所說,這么寫么有意義,條件結果始終都為true。
邏輯||或者邏輯&&一般使用的都是變量,真正寫代碼,是沒有人會寫常量的,
只有寫為變量,根據變量不同的值,才既可能有true,又可能有false,這樣才達到了邏輯||或者邏輯&&使用的目的。
一般像如下方法使用:
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
if(a||b||c) 或者 if(a||b&&cc) 或者if(a&&||c) 或者if(a&&b&&c)等等,
千變萬化,根據自己的需要,來決定是用||,還是&&。
C++中if語句和邏輯或的用法
邏輯或 || A || B,A,B 有一個為真,結果為真。
A,B 都為真,結果為真。A,B 都為假,結果為假。
0 為假, 1,2,3,4。等等都為真(即非0為真)。
if (條件){條件為真,做這里的語句}else {條件為假,做這里的語句};--------------------------------例子:如果 a 大于100 或 a 小于 0,做x=y;當a=0到100之間,做x=2y:if ( a>100 || a<0 ){x = y;} else { x = 2.0 * y;};。
C語言中邏輯運算符的規則是什么
邏輯運算符把各個運算的變量(或常量)連接起來組成一個邏輯表達式。
邏輯運算符有4個,它們分別是: !(邏輯非)、 ||(邏輯或)、&&(邏輯與) ^(異或)。在位運算里面還有 &(位與)、|(位或)的運算。
什么是邏輯運算--邏輯運算用來判斷一件事情是“對”的還是“錯”的,或者說是“成立”還是“不成立”,判斷的結果是二值的,即沒有“可能是”或者“可能不是”,這個“可能”的用法是一個模糊概念,在計算機里面進行的是二進制運算,邏輯判斷的結果只有二個值,稱這二個值為“邏輯值”,用數的符號表示就是“1”和“0”。其中“1”表示該邏輯運算的結果是“成立”的,如果一個邏輯運算式的結果為“0”,那么這個邏輯運算式表達的內容“不成立“。
例 1:通常一個教室有二個門,這二個門是并排的。要進教室從門A進可以,從門B進教室也行,用一句話來說是“要進教室去,可以從A門進‘或者’從B門進” 用邏輯符號來表示這一個過程--能否進教室用符號C表示,教室門分別為A和B。
C的值為1表示可以進教室,為0 表示進不了教室。A和B的值為1時表示門是開的,為0表示門是關著的,列表如下:說明 C A B 2個教室的門都關著,進不去教室 0 0 0 門B是開著的,可以進去 1 0 1 門A是開著的,可以進去 1 1 0 門A和B都是開著的,可以進去 1 1 1 把表中的過程寫成邏輯運算就是: C = A || B 這就是一個邏輯表達式,它是一個“或”運算的邏輯表達式。
這個表達式要表達的是這個意思--如果要使得C為1,只要 A“或”B其中之一為 1即可以達到。所以“||”運算稱為“或”運算。
思考--如果有一個表達式 C = A || B || C 怎樣理解這個邏輯表達式?例 2:假設一個房間外面有一個曬臺,那么這個房間就縱向開著二個門,要到曬臺去,必須要過這二個門,很明顯這二個門必須都是開著的才行,否則只要其中一個門關著就去不了曬臺。列表如下:說明 C A B 二個門都關著,去不了曬臺 0 0 0 門A關著,去不了曬臺 0 0 1 門B關著,去不了曬臺 0 1 0 門A與門B都開著,可以去曬臺 1 1 1 把表中的過程寫成邏輯運算式就是: C = A && B && C ,用一句話來描述這個表達式--如果要使得C為1,必須A'與'B都為1才行,否則其中任一個為0,C就為0。
所以“&&”運算符稱為“與”運算。思考--如果有一個表達式 C = A && B && C 怎樣理解這個邏輯表達式?例 3:有一個問題如下,有一個晚會,對參加晚會的人有一定的條件限制,教師可以參加,學生當中只有年齡達到16歲以上的男生才能參加,怎樣用上面所講的邏輯運算來表達這樣的邏輯關系?設能夠參加晚會為D,教師為A,男生為B,16歲以上為C,可以用下式來描述:D = A || ( B && C ) /*這個表達式可以理解嗎,可以參照上面表格用0、1來寫一下*/ 例 4:下面是一個程序,用到了if判斷語句(if是如果的意思)#include
"); /*輸出可以參加的信息*/ else /*否則*/ printf("你不能參加這個晚會。"); /*輸出不能參加的信息*/ } 邏輯量和邏輯值 在邏輯表達式里有參加邏輯運算的邏輯量及邏輯運算最后的結果(邏輯值),把這二個概念區分開來和記住它們是很重要的。
什么是邏輯量--凡是參加邏輯運算的變量、常量都是邏輯量。我們來仔細分析一下哪些是邏輯量,哪些是邏輯值。
要表達一件事情是否成立是這樣描述的:“如果他來了,這件事情一定能成功”。用程序語句描述就是 if(a!=0)在這個語句里用變量a來表示他來與不來這件事,變量的值為1說明他來了,為0就是不來。
在C語言中,一般不寫成這樣(如果一定要寫成if(a!=0),別人一看你的程序就知道你是編程菜鳥),而是寫成 if(a)。括號里面的變量a就是邏輯量。
當該邏輯量的邏輯值為1時,if表達式為真,這時可以執行if 后的的程序語句。當該邏輯量的邏輯值為0時,if表達式為假,就不能執行if后面的程序語句。
可以看出,if表達式能否成立是要看“邏輯量”最后的“邏值值”是否為1來判斷的。什么是邏輯值--邏輯量、邏輯表達式其最后的運算結果的值就是邏輯值。
邏輯值只能是“0”和“1”這二個數。“1”表示邏輯真(成立);“0”表示邏輯假(不成立)。
一切非“0”的邏輯量其邏輯值都為真。正確理解這句話很重要。
例:if(-1),這一句可以這樣來分析--首先“-1”是一個非“0”的邏輯量,它的邏輯值為“1”,那么這個if語句就成為 if(1),這個if表達式成立。思考:下面的式子中,哪個語句不被執行 int a=0,b=10; if(a) {b++;a++} a+=10; if(b) {a=10;b=-10;} if(b)a=0; C語言中進行邏輯運算時要注意的問題:例1:現在要判斷一個變量的值是否在12到30之間,很自然想到了這樣一個表達式:scanf("%d",&a); if(12if語句的運行過程:表達式12如果a>12則為真,否則為假。
設a的值為14。
if語句中的表達式不限于邏輯表達式,可以是任意的數值類型
可以是任意數值,但實際上編譯系統會把這個表達式強制轉成邏輯值,一般地false都為0;1或任何非零數值都是true,具體要看什么語言的。
判斷題
*語句中的表達式不限于邏輯表達式,可以是任意的數值類型。【Y 】
*語句可以用if語句完全代替。【Y 】
*語句的case表達式必須是常量表達式。【 Y】
*語句,switch語句可以嵌套,而且嵌套的層數沒有限制。【Y 】
5.條件表達式可以取代if語句,或者用if語句取代條件表達式。【N 】
*語句的各個case和default的出現次序不影響執行結果。【N 】
7.多個case可以執行相同的程序段。【Y 】
8.內層break語句可以終止嵌套的switch,使最外層的switch結束。【 N】
*語句的case分支可以使用{ }復合語句,多個語句序列。【Y 】
*語句的表達式與case表達式的類型必須一致。【Y 】
11.在switch多分支中,break語句可使流程立即跳出switch語句體。【Y 】
* (a=*必須有else與之配對。【N 】
求助
*語句的一般格式
if(表達式)
{語句組1;}
[else
{語句組2;} ]
(1)if語句中的“表達式”必須用“(”和“)”括起來。
(2)else子句(可選)是if語句的一部分,必須與if配對使用,不能單獨使用。
(3)當if和else下面的語句組,僅由一條語句構成時,也可不使用復合語句形式(即去掉花括號)。
*語句的執行過程
(1)缺省else子句時
當“表達式”的值不等于0(即判定為“邏輯真”)時,則執行語句組1,否則直接轉向執行下一條。
(2)指定else子句時
當“表達式”的值不等于0(即判定為“邏輯真”)時,則執行語句組1,然后轉向下一條語句;否則,執行語句組2。如圖4-1(b)所示。
*語句的嵌套與嵌套匹配原則
if語句允許嵌套。所謂if語句的嵌套是指,在“語句組1”或(和)“語句組2”中,又包含有if語句的情況。
if語句嵌套時,else子句與if的匹配原則:與在它上面、距它最近、且尚未匹配的if配對。
為明確匹配關系,避免匹配錯誤,強烈建議:將內嵌的if語句,一律用花括號括起來。