1樓:伊婷婷
c語言中的邏輯運算子就三種,&&與||或!非,它們的優先極順序為非,與,或。它們含義如下,!:
當操做數為真時,結果為假,反之也成立,並且它的優先極也最高,因為只有它是單目運算子,&&:只有當兩個操做數都為真時,結果才為真,否則為假。||:
只有當兩個操做數都為假時,結果才為假,否則結果為真。除了這些,邏輯運算子還有幾點應注意,!運算子是右結合性,&&和||是左結合性。
在邏輯表示式求解時,並不是所有的邏輯運算子都被執行,只是在必須執行下一個邏輯運算子才能求表示式的解時,才能執行該運算子。如 補充: a&&b&&c只有a為真(非0),才判別b的值,只有a和b都為真情況下才判斷c的值,只要a為假,就不用判斷b和c的值了。
a||b||c只要a為真就不必判斷b和c,只有a為假,才判斷b,a和b都為假才判斷c
2樓:匿名使用者
*****
*****凡是c語言中的運算子大都有與之對應的運算元,而且運算元的資料型別往往都有一定的限制。c語言的邏輯運算子比較特別,它的運算元沒有明確的資料型別,它們統稱邏輯值,但是這個邏輯值卻沒有與之對應的資料型別,比如c++裡面的bool已經windows裡面的bool,很遺憾c沒有自己的邏輯型別。
*****
*****c規定,所有帶有整形性質的資料型別都可以作為邏輯運算子的運算元,包括所有整形(有符號/無符號int、long),字元型(有符號/無符號char),以及所有指標。這些資料型別定義的變數,都與一個整數對應,只要這個整數不是0,c就把它當作邏輯值的『真』,只有當變數值為0時,變數對應的邏輯值才為『假』。
*****
*****編譯器是如何使用這種『真』『假』值呢?一般在選擇判斷語句,即if語句。只要if()括號裡的值非零,編譯器就認為條件滿足(假設成立),從而執行後面的語句組。
*****
*****準備好了嗎? 現在可以開始談運算子了。運算子就是對以上介紹的一個或多個邏輯值(可以用1統一代表非零作為真值,用0代表假值)進行運算的符號,其中有「&&」、「||」、「!
」三個。第一個,對兩個邏輯值做「與運算」,只有當兩個邏輯值都為真時結果才是真,可以理解成邏輯值相乘;第二個,對兩個邏輯值做「或運算」,只要兩個邏輯值其中一個為真結果就為真,可以理解成邏輯值相加;第三個,求反,顧名思義,運算元邏輯值為真,求反運算結果則為假,反之亦然。
*****
*****說了不少,不知夠不夠清楚,舉幾個例子吧。
// example 1:
int intvalue;
long longvalue;
char charvalue;
long* plong;
intvalue = -100;
longvalue = 0;
charvalue = 'a';
plong = &longvalue;
// 與 「&&」
if( (intvalue // 或 「||」 if( (intvalue // 求反 「!」 if(!plong) ****** ******花了30多分鐘回答你的問題,哈哈!成copy的啦!隨便你怎麼想,你要是覺得我寫的東西對你沒幫助的話,我沒有什麼好說的...... 3樓:修者世界 c語言中邏輯運算子有三個: 1、&&:與運算,表示兩個物件只要有一個為0,結果就為0,全為1則結果為1 2、||:或運算,表示兩個物件只要有一個為1,則結果為1,全為0則結果為0 3、!:非運算,表示對運算物件取反,物件為0,結果為1,物件為1,結果為0 4樓:花開傷落 你看得是什麼教材啊 這個教材應該都會說的 問題1,2 都是關於這個++符號的問題 這個你看書自學去 都被說爛了問題3 (c=1)&&(c=3)&&(c=5) 這個式子中 c=1 c=3 c=5 這三個表示式的值分別為 1 3 5,結合邏輯運算子&& 從左到右 計算 ,每個表示式都為真 (非0即為真) 所以 整個式子都為真 推薦看教材 c primer plus. 5樓:102錄影導航 1.&& 與 1&&1 運算結果是1 1&&0 運算結果是0 0&&1 運算結果是0 0&&0 運算結果是0 2.|| 或 1||1 運算結果是1 1||0 運算結果是1 0||1 運算結果是1 0||0 運算結果是0 3.! 非 !1 運算結果是0 !0 運算結果是1 它們的運算是通過計算機硬體來實現的,規定就是這樣. 6樓:匿名使用者 1.&& 與運算子 都為1時才1,其他為0 例子:1&&1 是1 1&&0 0&&1 0&&0 這三個結果都為02.|| 或運算子 只要有一個為1,其結果就為 1 1||1 1||0 0||1 結果都為1唯獨 0||0 是0 3.! 非運算子 相反,即1變0 0變1 !1 是0 !0 是1 c語言中邏輯運算子的規則是什麼 7樓:匿名使用者 1、邏輯運算子運算規則: || 或:比 如兩個條件中,只要有一個成立,則結果就成立; &&與:比如兩個條件中,兩個同時成立,則結果成立,否則不成立; !非,就是取反之意,如果是真,結果是假,如果是假,結果是真。 2、邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。下為c語言邏輯運算||和&&的真值表: 8樓:匿名使用者 邏輯運算子把各個運算的變數(或常量)連線起來組成一個邏輯表示式。 邏輯運算子有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 void main() 邏輯量和邏輯值 在邏輯表示式裡有參加邏輯運算的邏輯量及邏輯運算最後的結果(邏輯值),把這二個概念區分開來和記住它們是很重要的。 什麼是邏輯量--凡是參加邏輯運算的變數、常量都是邏輯量。 我們來仔細分析一下哪些是邏輯量,哪些是邏輯值。 要表達一件事情是否成立是這樣描述的:「如果他來了,這件事情一定能成功」。用程式語句描述就是 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) a+=10; if(b) if(b)a=0; c語言中進行邏輯運算時要注意的問題: 例1:現在要判斷一個變數的值是否在12到30之間,很自然想到了這樣一個表示式: scanf("%d",&a); if(1212則為真,否則為假。設a的值為14,些時表 邏輯運算子有三種,分別為 與運算 或運算 非運算 三者的優先順序順序為 ps.1 與運算子 和或運算子 均為雙目運算子。具有左結合性。非運算子 為單目運算子,具有右結合性。2 和 優先順序低於關係運算子,優先順序高於算術運算子。 a b c 1 a b c b c a b c ls,貌似 的優先順序... x y z 優先順序,所以上式等價於 x y z 這裡 x和 y z 是同級別的,表示式從左往右掃描,x成立,後面就直接跳過,輸出100 x y z 同理,優先順序 x y z x值是0,跳過 y 但是這隻能說明 的左邊是0,右邊還是要計算的,z執行了,所以最後輸出0,1,0 說明白點,這裡的優先順... if 條件表示式 語句1 語句2 if是條件判斷的關鍵字,後面的小括號裡包含的是條件表示式。如果條件表示式為非0,執行大括號 裡的 語句1 如果條件表示式值為0,則不執行 裡的 語句1 而是調過 語句1 直接執行 語句2 你這個問題的條件表示式是 i k i j j k 這個表示式被兩個 分為了三部...c語言邏輯運算子順序,C語言邏輯運算子順序
c語言邏輯運算子問題,c語言邏輯運算子 我不明白 和 到底是怎麼運算的
C語言邏輯運算,c語言邏輯運算子 我不明白 和 到底是怎麼運算的