① c語言邏輯或與非的用法
C語言邏輯或與非用於邏輯運算,可以在一條語句中同時出現,但還有優先順序的限制。
基本應用:
邏輯與,符號為「&&」,只有兩個操作數都是真,結果才是真。邏輯或,是邏輯運算符,符號是「||」。表示當兩個條件中有任一個條件滿足,「邏輯或」的運算結果就為「真」。「!」(邏輯非)邏輯運算符。「邏輯非」就是指本來值的反值。
優先順序:
C語言中,運算符的運算優先順序共分為15 級。1 級最高,15 級最低。邏輯與運算符 13級「&&」邏輯與運算符。邏輯或運算符 14 級,「 || 」邏輯或運算符。邏輯否「!」單目/一元運算 3級。因此優先順序為:邏輯非高於邏輯與高於邏輯非。
運算方向:
在C語言中,只有4個運算符規定了運算方向,它們是&&、| |、條件運算符及賦值運算符。&&、| |都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如 a = 0 && b; &&運算符的左邊位0,則右邊表達式b就不再判斷。
(1)c語言邏輯與排多少擴展閱讀:
相關規則及應用:
1、邏輯運算符:a=1,b=1;a||b-1;因為a=1為真值,所以不管b-1是不是真值,總的表達式一定為真值,這時後面的表達式就不會再計算了。
2、短路原則:
在邏輯表達式的求解過程中,任何時候只要邏輯表達式的值已經可以確定,則求解過程不再進行,求解結束。表達式中優先順序最低的邏輯運算符,以這些運算符為准將整個邏輯表達式分為幾個計算部分。最左邊一個計算部分開始,按照算術運算、關系運算和邏輯運算的規則計算該部分的值。
每計算完一個部分就與該部分右邊緊靠著的邏輯運算符根據真值表進行邏輯值判斷。如果已經能夠判斷出整個邏輯表達式的值則停止其後的所有計算;只有當整個邏輯表達式的值還不能確定的情況下才進行下一個計算部分的計算。
② C語言邏輯運算符順序是什麼
LS,貌似&&的優先順序比||大 = 賦值語句結合性 自右相左
a=b=c=1;等價於 c = 1;b = c; a = b;
-------------------------
看了sunnyapi的回答我感覺有必要
對以上回答進行一點補充
首先聲明 ||和&&運算符均屬於短路運算符;
什麼是短路運算符舉個簡單例子
若 a = 1; a||a++;運行後結果是什麼,變數a值為多少?
||邏輯或對第一項a進行判斷是否為0,若不為零則返回值為1;且不在進行後面的a++運算,這就是短路運算符的特性,這樣一來,a的值還是1沒有改變,同理 a =0; 0&&a++;的運行結果為a=0;
舉個形象點的例子:
a=1 a就是真
b=0 b就是假
a||a-- 真||a++,既然已經有真的了就沒必要再判斷a--是否為真 1||a++;肯定是真的;
同理 b&&b++ ,假&&b--既然已經有假的了就沒有必要判斷b++真假,同時b++也就不會被執行
++a||++b&&++c;這個語句根據算數運算符的優先順序關系 &&的優先順序比||大 『可以這樣理解』
所以先運行對++a||++b 和 ++c進行邏輯與(&&)運算,並先判斷++a||++b是否為假若假則不進行++c;在判斷 ++a||++b 是否為真的過程中,進行了++a和++b的||(邏輯或)運算,在邏輯或運算中先判斷++a是否為零,這個過程中相當於 先a=a+1;再if (a!=0) 因為前面a=1,再運行++a,a這時等於2所以在if (a!=0) 成立則,不會運行++b;
所以
運行結果為a =2 ,b=c=1;
再程序執行++a||++b&&++c;這條語句的過程中只有a變數的值發生改變,而不是樓下說的那樣
「在執行「++a||++b&&++c;」語句之前完成自加運算」 這是錯的·
上述方法只是為了幫助你理解這個++a||++b&&++c;語句的意思
若我寫個a=b=c=1; ++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;你說該怎麼理解?
挨個分析優先順序,?
那不得瘋了
所以那樣也沒必要++a||++b&&++c||++a||++b&&++c||++a||++b&&++c;只要由左到右依次運行這樣來判斷就好了就是(++a )語句1|| (++b&&++c||++a||++b&&++c||++a||++b&&++c)語句2
(++a)==2!=0所以嘛,語句2就不執行了 這樣判斷也符合 該語句的執行順序
③ C語言提供3種邏輯運算符,按優先順序高低它們分別是
C語言提供三種邏輯運算符,按優先順序高低它們分別是:邏輯非(!),邏輯與(&&)、邏輯或(||)。
運算規則:
&&:當且僅當兩個運算量的值都為「真」時,運算結果為「真」,否則為「假」。
|| :當且僅當兩個運算量的值都為「假」時,運算結果為「"假」,否則為「真」。
! :當運算量的值為「真」時,運算結果為「假」;當運算量的值為「假」時,運算結果為「真」。
例如:假定x=5,則(x>=0) && (x<10)的值為「真」,(x<-1) || (x>5)的值為「假」。
(3)c語言邏輯與排多少擴展閱讀
C語言中運算符分為四類:算數運算符、關系運算符、邏輯運算符、位運算符。
算數運算符(9):+ - * / % ++ --
關系運算符(6):== != > >= < <=
邏輯運算符(6):&& || ! ^ & |
位運算符(7):& | ~ ^ >> << >>>;
1級是特殊運算符:括弧()
2級是單目運算符:++,-- 從右向左運算,只需要一個運算對象;
3、4級算數運算符:+ - * /
6、7級關系運算符:== != > >= < <=
11、12級邏輯運算符:&& || ! ^ & |
3~12級是雙目運算符:從左向右,需要兩個運算對象
13級是三目運算符:需要三個運算對象
14級是賦值運算符:=
④ c語言邏輯運算符有哪些,及運算先後順序
邏輯運算有三種,與或非。
1 邏輯與運算,符號為&&,形式為a&&b;
2 邏輯或運算,符號為||,形式為a||b;
3 邏輯非運算,符號為!,形式為!a。
當邏輯運算寫在一起的時候,邏輯非!運算優先順序最高,其次為邏輯與&&,最低為邏輯或||。
即先計算非,再計算與,最後計算或。
同類運算時,運算順序為從左到右。
⑤ C語言中運算符優先順序排序
C語言中運算符優先順序排序如下:
分為優先順序15級:
1、圓括弧【()】、下標運算符【[]】、分量運算符的指向結構體成員運算符【->】、結構體成員運算符【.】;
2、邏輯非運算符【!】、按位取反運算符【~】、自增自減運算符【++】【 --】、負號運算符【-】、類型轉換運算符【(類型)】、指針運算符和取地址運算符【*】【&】、長度運算符【sizeof】;
3、乘法運算符【*】、除法運算符【/】、取余運算符【%】;
4、加法運算符【+】、減法運算符【-】;
5、左移動運算符【<<】、右移動運算符【>>】;
6、關系運算符【< 】【>】【<=】【 >= 】;
7、等於運算符【==】、不等於運算符【!=】;
8、按位與運算符【&】;
9、按位異或運算符【^】;
10、按位或運算符【|】;
11、邏輯與運算符【&&】;
12、邏輯或運算符【||】;
13、條件運算符【?:】;
14、賦值運算符【=】【/=】【*=】【%=】【+=】【-=】【<<=】【>>=】【&=】【^=】【|=】;
15、逗號運算符【,】。
(5)c語言邏輯與排多少擴展閱讀:
運算符優先順序的記法:
C語言把除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算符處理,可見其范圍的寬(如:將賦值符「=」作為賦值運算符、方括弧作為下標運算符)。
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表達式求值順序是從左到右。優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
基本的優先順序需要記住:指針最優,單目運算優於雙目運算。如正負號。先算術運算,後移位運算,最後位運算。邏輯運算最後結合。
參考資料來源:網路-運算符
⑥ c語言中邏輯運算符和的次序優於或嗎
是的,邏輯與的優先順序高於邏輯或。
詳細優先順序順序請在「網路」里查「C運算符優先順序」,第11級是邏輯與,第12級是邏輯或。
⑦ C語言中邏輯運算符的規則是什麼
1、邏輯運算符運算規則:
||或:比如兩個條件中,只要有一個成立,則結果就成立;
&&與:比如兩個條件中,兩個同時成立,則結果成立,否則不成立;
!非,就是取反之意,如果是真,結果是假,如果是假,結果是真。
2、邏輯運算符是根據表達式的值來返回真值或是假值。其實在C語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。下為C語言邏輯運算||和&&的真值表:
⑧ c語言邏輯與和邏輯或和邏輯非的運算
邏輯與運算符:全為真(1)即結果為真(1),一個為假即全為假((0)邏輯或運算符:全為假(0)即結果為假(0),一個為真即全為真(1)邏輯非:非真(1)即為假(0)非假即為真。
⑨ 計算機C語言中邏輯運算符「與」「或」「非」優先順序是怎樣的
非的優先順序最高(它是一個單目操作符)與的優先順序次之或的優先順序,最低單目操作符的優先順序最高。
1)&&:當且僅當兩個運算量的值都為"真"時,運算結果為"真",否則為"假"。
2) || :當且僅當兩個運算量的值都為"假"時,運算結果為"假",否則為"真"。
3) ! :當運算量的值為"真"時,運算結果為"假";當運算量的值為"假"時,運算結果為"真"。
(9)c語言邏輯與排多少擴展閱讀:
優先順序:
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表達式求值順序是從左到右。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。