C語言邏輯運算子問題,c語言邏輯運算子 我不明白 和 到底是怎麼運算的

時間 2021-10-17 05:03:01

1樓:匿名使用者

c表示式中的操作符按優先順序順序結合,本表示式中運算子的優先順序順序從高到低為:()、%、==、!=、&&、||。

所以表示式計算分解為:

temp1=year%4;

temp2=year%100;

te***=year%400;

temp4=(temp1==0);

temp5=(temp2!=0);

temp6=(te***==0);

temp7=(temp5&&temp6);

expr=(temp7||temp6);

所以操作符"!="的運算元為temp2和0,即(year%100)和0兩個表示式;

2樓:匿名使用者

整個邏輯表示式由兩個邏輯條件構成:

1. 是(year%4==0&&year%100!=0),表達year能夠被4整除但是不能被100整除,含義就是除了末尾兩位數是00的年份外,能夠被4整除的那些年份滿足條件。

其中!是與 = 共同構成c的關鍵字 != 表示“不等於”的關係。

2. year%400==0,表示能夠被400整除的年份(%是求餘數運算)表示式表達的含義是year除以400時餘數等於0。

1和2兩個條件之間的的關係是“邏輯或”,用“||”表示。任何一個year,若滿足1和2兩個條件之一,就使整個表示式的計算結果為“真”,在c語言中即為1。如果某個year對上述兩個條件都不滿足,則使表示式的計算結果為假,即為0。

題目應該要求的是閏年的年份,閏年的條件是:

年份能夠被4整除但不能被100整除,或者年份能被400整除。

c語言邏輯運算子 我不明白&&和||到底是怎麼運算的

3樓:匿名使用者

1 形式:

&&的形式為a&&b。

||的形式為a||b。

2 計算規則:

&&只有當a和b的值均非0時,結果為1,否則結果為0。

||只有當a和b的值均為0時,結果為0,否則結果為1。

3 優先順序:

&&的優先順序比||高,所以在寫在一起時,先計算&& 再計算||。

相同符號時,自左向右計算。

4 短路原則:

對於&&,如果左運算元a為0,那麼結果必然為0, 右運算元b將不參與計算。

對於||,如果左運算元a非0,那麼結果必然為1, 右運算元b將不參與計算。

4樓:匿名使用者

邏輯運算,方式子成立是即為真時整個式子值就為1反之為0,而對於值來說只要不是0就為真,如i&&j&&k=1,i,j=3都為真,所以整個式子為真等於1。另外要注意的是當&&左邊為假時不進行右邊計算,如(i=0)&&(j=3);l為0假右邊j=3不進行運算,所以j還是等於2,手機寫的真不方便。

5樓:**

i&&j&&k,先判斷i&&j,因為i和j都大於0,所以這個命題是真的,所以i&&j這個表示式等於1,再判斷後面的1&&k(ps:如果i&&j這個表示式等於0,後面的就不用判斷了,整個表示式就是0了)

。因為k大於0,所以1&&k就等於1,整個表示式就等於1了。

6樓:匿名使用者

邏輯正即為1,否則就為0,所以i&&j&&k=1

至於後面的就是因為&&這個運算子了,如果它的前一個為0的話那後面的就會直接忽略

不過你的結果貌似有點問題。。。。

c語言中邏輯運算子非"!"與"&&"或"||"的優先順序怎麼說?

7樓:a羅網天下

邏輯非的優先順序最高,邏輯與次之,邏輯或最低,即:!(非) → &&(與) → ||(或)

記憶口訣:not(非) and(與) or(或)

運算規則

1)&&:當且僅當兩個運算量的值都為"真"時,運算結果為"真",否則為"假"。

2) || :當且僅當兩個運算量的值都為"假"時,運算結果為"假",否則為"真"。

3) ! :當運算量的值為"真"時,運算結果為"假";當運算量的值為"假"時,運算結果為"真"。

例如,假定x=5,則(x>=0) && (x<10)的值為"真",(x<-1) || (x>5)的值為"假"。

優先順序

優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表示式求值順序是從左到右。

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

相同優先順序中,按結合性進行結合。大多數運算子結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。

基本的優先順序需要記住:

指標最優,單目運算優於雙目運算。如正負號。

先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7.

邏輯運算最後結合。

8樓:喜歡種蘑菇

同一優先順序的運算子,結合次序由結合方向所決定。簡單記就是:! > 算術運算子 > 關係運算子 > && > || > 賦值運算子。

9樓:飛雪射鹿笑倚鴛

c語言中邏輯運算子優先順序非"!"與>"&&">"||",建議混合使用的時候加上括號,這樣的**便於自己和其他人維護。

10樓:我喜歡蘆潔

“!”>“&&”>“‖”

11樓:

不知道的就加括號,這是常識,不必記

c語言中的邏輯或運算子怎麼打出來?

12樓:

c語言中的邏輯或運算子可以按住shift鍵,接著按兩下enter上面的鍵就能打出來,接下來具體的演示一下:

1、按住shift鍵不鬆手,接著按兩下enter上面的鍵,如下圖所示2、然後邏輯或運算子就打出來了,如下圖所示3、打邏輯或運算子的時候不需要區分大小寫,在中英文輸入法中按照上面的步驟都能打出來

13樓:匿名使用者

c語言的邏輯或運算子為||,這並不是一個字元,而是由兩個|組成的。

所以在打||的時候,需要連續打兩個|。

|在鍵盤右上角,backspace下面有一個印有|和\的鍵。按住shift同時按這個鍵,就可以打出|了。

在打||的時候,可以按住shift,再按|鍵兩次,然後抬起shift鍵即可。

邏輯或的運算形式為:

expr1 || expr2

其運算規則為:

當expr1與expr2均為假時,結果為假。

否則結果為真。

14樓:匿名使用者

||;shift加右方括弧的右邊那個鍵;該按鍵是'|'和英文'\'中文頓號'、'的輸入鍵

15樓:匿名使用者

就是上檔字元 \ : shift + \ = |

16樓:匿名使用者

鍵盤打出來啊 0 0.

< > <= >= != ==

+ - * / %

c語言邏輯運算子順序是什麼?

17樓:匿名使用者

ls,貌似&&的優先順序比||大 = 賦值語句結合性 自右相左

a=b=c=1;等價於 c = 1;b = c; a = b;

-------------------------

對以上回答進行一點補充

首先宣告 ||和&&運算子均屬於短路運算子;

什麼是短路運算子舉個簡單例子

若 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語言中邏輯運算子的“或”怎樣輸入?

18樓:街道小巷

||或者||這個嗎?按住shift然後再加上等於符號的後面一個符號就行了

19樓:匿名使用者

按住shift鍵不放,然後按兩下\反斜槓鍵就可以了。

20樓:shine戚七七

按住shift別放,再覆按回車上面那個

斜槓制鍵,然後同時鬆開。

重複上面那個步驟一次。

即可完成輸入“||”。

c語言運算子:

加法運算子 6級

“ + ”加法運算子;“ - ”減法運算子。

移位運算子 7級

<< 左移運算子;>> 右移運算子。

關係運算子 8級

<、<=、>、>=關係運算子。

相等運算子 9級

“ == ”等於運算子;“ != ”不等於運算子。

位與運算子 10級

“ & ”按位與運算子

位異或運算子 11級

“ ∧ ”按位異或運算子(bitwise exclusive or operator)。

位或運算子 12 級

“ | ”按位或運算子(bitwise inclusive or operator)。

邏輯與運算子 13級

“&&”邏輯與運算子。

邏輯或運算子 14 級

“ || ”邏輯或運算子。

三元條件運算子 15級

? :條件運算子。

賦值運算子 16 級

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算子。

21樓:匿名使用者

上檔鍵(shift) + 斜槓\ 斜槓的上面就是或了 ‘|’

關於c語言邏輯運算子一道簡單的題目!

22樓:夏碧夢

這是邏輯運算子的短路判斷造成的!

由於邏輯運算子||和&&實現判斷左值的,顯然如果根據左值就能夠判斷整個表示式真假的話,那剩下的就不用判斷了!目前的c編譯就是這樣處理的!

對於邏輯或||,左值為真,整個表示式就為真;

對於邏輯與&&,左值為假,整個表示式就為假!

++x||++y&&++z中先執行邏輯或||左邊的++x後x=1,左值為真,後面的自然就不用處理了!

c語言邏輯運算順序,C語言邏輯運算子順序

k x 0 y 0 z x y 就是這個順序 x 是先使用x的值,再 之後,x的值變為0.所以x 0這個表示式的值為false對於邏輯與運算,如果第乙個表示式為false,則第二個表示式將不驗證所以 y 0 沒有執行,y的值仍然為5對於或運算,若第乙個表示式的值為false,則還要驗證第二個表示式於...

c 邏輯運算子,c 中邏輯運算子的問題。

x 2 y和z的值不變 邏輯運算 x的值為1,因此後面的語句沒有執行 參考 短路求值 作為 和 操作符的運算元表示式,這些表示式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱之為短路求值。這是這兩個操作符的乙個重要屬性。假如expr1和expr2都是表示式,並且expr1的...

python邏輯運算子有哪些

網際網路 邏輯運算子用於組合多個條件測試語句。假設 我今年18歲 和 我身高2米 這兩個語句,前一個語句是真的,後一個語句是假的,因此,我今年18歲,並且我身高2米 這個語句是假的。其中,並且 可以認為是邏輯運算子。python中有三種邏輯運算子,分別是and or和not。一 邏輯運算子and 使...