本文目錄一覽:
C語言中邏輯運算符用法是什麼?
1、邏輯運算符是根據表達式的值來返回真值或是假值。在C語言中沒有專門的真值和假值,認定非0為真值,0為假值。
2、邏輯運算符運算規則:
|| 或:兩個條件中,只要有一個成立,則結果就成立;
與:兩個條件中,兩個同時成立,則結果成立,否則不成立;
! 非:取反之意,如果是真,結果是假,如果是假,結果是真。
下為C語言邏輯運算||和的真值表:
C語言
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C語言邏輯或與非的用法
C語言邏輯或與非用於邏輯運算,可以在一條語句中同時出現,但還有優先級的限制。
基本應用:
邏輯與,符號為“”,只有兩個操作數都是真,結果才是真。邏輯或,是邏輯運算符,符號是“||”。表示當兩個條件中有任一個條件滿足,“邏輯或”的運算結果就為“真”。“!”(邏輯非)邏輯運算符。“邏輯非”就是指本來值的反值。
優先級:
C語言中,運算符的運算優先級共分為15 級。1 級最高,15 級最低。邏輯與運算符 13級“”邏輯與運算符。邏輯或運算符 14 級,“ || ”邏輯或運算符。邏輯否“!”單目/一元運算 3級。因此優先級為:邏輯非高於邏輯與高於邏輯非。
運算方向:
在C語言中,只有4個運算符規定了運算方向,它們是、| |、條件運算符及賦值運算符。、| |都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如 a = 0 b; 運算符的左邊位0,則右邊表達式b就不再判斷。
擴展資料:
相關規則及應用:
1、邏輯運算符:a=1,b=1;a||b-1;因為a=1為真值,所以不管b-1是不是真值,總的表達式一定為真值,這時後面的表達式就不會再計算了。
2、短路原則:
在邏輯表達式的求解過程中,任何時候只要邏輯表達式的值已經可以確定,則求解過程不再進行,求解結束。表達式中優先級最低的邏輯運算符,以這些運算符為準將整個邏輯表達式分為幾個計算部分。最左邊一個計算部分開始,按照算術運算、關係運算和邏輯運算的規則計算該部分的值。
每計算完一個部分就與該部分右邊緊靠着的邏輯運算符根據真值表進行邏輯值判斷。如果已經能夠判斷出整個邏輯表達式的值則停止其後的所有計算;只有當整個邏輯表達式的值還不能確定的情況下才進行下一個計算部分的計算。
參考資料來源:百度百科-邏輯與
參考資料來源:百度百科-邏輯或
參考資料來源:百度百科-邏輯非
參考資料來源:百度百科-C語言運算符
怎樣在C語言中用運算邏輯表達式表達?
首先判斷某一年為閏年的條件是:能被4整除,同時又能被100整除,或者是能被400整除。
假設某一年為x,那麼這個表達式就可以寫為:if((x%4==0x%100==0)||x%400==0)這樣只要滿足if裡面的條件就可以判斷該年是閏年了。
還有一點提醒一下吧,像這樣的數學表達式:0=x=10,在C語言裡面的寫法跟它是不同的:x=0x=0
其它的表達式就都可以這樣類推了~
下面提供一個判斷某一年是否為閏年的代碼:
#includestdio.h
main()
{
int
x;
printf(“Enter
a
year
x:”);
scanf(“%d”,x);
if((x%4==0x%100==0)||x%400==0)
printf(“%d是潤年\n”,x);
else
printf(“%d不是潤年\n”,x);
}
簡單的介紹一下邏輯運算符:
!:邏輯非;
:邏輯與;
||
:邏輯或。
其中邏輯與
和邏輯或是雙目運算符,邏輯非是單目運算符。
1.能被4整除,但不能被100整除,也就是說能被4整除的同時不能被100整除:(x%4==0)(x%100!=0)
2.能被4整除,又能被100整除:
x%400==0,
1
2之間是或者關係::(x%4==0)(x%100!=0)||(x%400==0)
c語言中邏輯或怎麼用
賦值運算符
賦值語句的作用是把某個常量或變量或表達阿式的值賦值給另一個變量。符號為‘=’。這裡並不是等於的意思,只是賦值,等於用‘==’表示。
注意:賦值語句左邊的變量在程序的其他地方必須要聲明。
得已賦值的變量我們稱為左值,因為它們出現在賦值語句的左邊;產生值的表達式我們稱為右值,因為她它們出現在賦值語句的右邊。常數只能作為右值。
例如:
count=5;
total1=total2=0;
第一個賦值語句大家都能理解。
第二個賦值語句的意思是把0同時賦值給兩個變量。這是因為賦值語句是從右向左運算的,也就是說從右端開始計算。這樣它先total2=0;然後total1=total2;那麼我們這樣行不行呢?
(total1=total2)=0;
這樣是不可以的,因為先要算括號裡面的,這時total1=total2是一個表達式,而賦值語句的左邊是不允許表達式存在的。
算術運算符
在C語言中有兩個單目和五個雙目運算符。
符號 功能
+ 單目正
– 單目負
* 乘法
/ 除法
% 取模
+ 加法
– 減法
下面是一些賦值語句的例子, 在賦值運算符右側的表達式中就使用了上面的算術運算符:
Area=Height*Width;
num=num1+num2/num3-num4;
運算符也有個運算順序問題,先算乘除再算加減。單目正和單目負最先運算。
取模運算符(%)用於計算兩個整數相除所得的餘數。例如:
a=7%4;
最終a的結果是3,因為7%4的`餘數是3。
那麼有人要問了,我要想求它們的商怎麼辦呢?
b=7/4;
這樣b就是它們的商了,應該是1。
也許有人就不明白了,7/4應該是1.75,怎麼會是1呢?這裡需要說明的是,當兩個整數相除時,所得到的結果仍然是整數,沒有小數部分。要想也得到小數部分,可以這樣寫7.0/4或者7/4.0,也即把其中一個數變為非整數。
那麼怎樣由一個實數得到它的整數部分呢?這就需要用強制類型轉換了。例如:
a=(int) (7.0/4);
因為7.0/4的值為1.75,如果在前面加上(int)就表示把結果強制轉換成整型,這就得到了1。那麼思考一下a=(float) (7/4);最終a的結果是多少?
單目減運算符相當於取相反值,若是正值就變為負值,若是負數就變為正值。
單目加運算符沒有意義,純粹是和單目減構成一對用的。
邏輯運算符
邏輯運算符是根據表達式的值來返回真值或是假值。其實在C語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。
符號 功能
邏輯與
|| 邏輯或
! 邏輯非
例如:
5!3;
0||-25;
!4;
當表達式進行運算時,只要有一個為假,總的表達式就為假,只有當所有都為真時,總的式子才為真。當表達式進行||運算時,只要有一個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!)運算是把相應的變量數據轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。
還有一點很重要,當一個邏輯表達式的後一部分的取值不會影響整個表達式的值時,後一部分就不會進行運算了。例如:
a=2,b=1;
a||b-1;
因為a=2,為真值,所以不管b-1是不是真值,總的表達式一定為真值,這時後面的表達式就不會再計算了。
關係運算符
關係運算符是對兩個表達式進行比較,返回一個真/假值。
符號 功能
大於
小於
= 大於等於
= 小於等於
== 等於
!= 不等於
這些運算符大家都能明白,主要問題就是等於==和賦值=的區別了。
一些剛開始學習C語言的人總是對這兩個運算符弄不明白,經常在一些簡單問題上出錯,自己檢查時還找不出來。看下面的代碼:
if(Amount=123) ……
很多新人都理解為如果Amount等於123,就怎麼樣。其實這行代碼的意思是先賦值Amount=123,然後判斷這個表達式是不是真值,因為結果為 123,是真值,那麼就做後面的。如果想讓當Amount等於123才運行時,應該if(Amount==123) ……
自增自減運算符
這是一類特殊的運算符,自增運算符++和自減運算符–對變量的操作結果是增加1和減少1。例如:
–Couter;
Couter–;
++Amount;
Amount++;
看這些例子里,運算符在前面還是在後面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表達式的一部分,兩者就有區別了。運算符放在變量前面,那麼在運算之前,變量先完成自增或自減運算;如果運算符放在後面,那麼自增自減運算是在變量參加表達式的運算後再運算。這樣講可能不太清楚,看下面的例子:
num1=4;
num2=8;
a=++num1;
b=num2++;
a =++num1;這總的來看是一個賦值,把++num1的值賦給a,因為自增運算符在變量的前面,所以num1先自增加1變為5,然後賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因為自增運算符在變量的後面,所以先把num2賦值給b,b應該為8,然後num2自增加1變為 9。
那麼如果出現這樣的情況我們怎麼處理呢?
c=num1+++num2;
到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的編程當中,應該盡量避免出現上面複雜的情況。
複合賦值運算符
在賦值運算符當中,還有一類C/C++獨有的複合賦值運算符。它們實際上是一種縮寫形式,使得對變量的改變更為簡潔。
Total=Total+3;
乍一看這行代碼,似乎有問題,這是不可能成立的。其實還是老樣子,’=’是賦值不是等於。它的意思是本身的值加3,然後在賦值給本身。為了簡化,上面的代碼也可以寫成:
Total+=3;
複合賦值運算符有下列這些:
符號 功能
+= 加法賦值
-= 減法賦值
*= 乘法賦值
/= 除法賦值
%= 模運算賦值
= 左移賦值
= 右移賦值
= 位邏輯與賦值
|= 位邏輯或賦值
^= 位邏輯異或賦值
上面的十個複合賦值運算符中,後面五個我們到以後位運算時再說明。
那麼看了上面的複合賦值運算符,有人就會問,到底Total=Total+3;與Total+=3;有沒有區別?答案是有的,對於A=A+1,表達式A被計算了兩次,對於複合運算符A+=1,表達式A僅計算了一次。一般的來說,這種區別對於程序的運行沒有多大影響,但是當表達式作為函數的返回值時,函數就被調用了兩次(以後再說明),而且如果使用普通的賦值運算符,也會加大程序的開銷,使效率降低。
條件運算符
條件運算符(?:)是C語言中唯一的一個三目運算符,它是對第一個表達式作真/假檢測,然後根據結果返回兩外兩個表達式中的一個。
表達式1?表達式2:表達式3
在運算中,首先對第一個表達式進行檢驗,如果為真,則返回表達式2的值;如果為假,則返回表達式3的值。
例如:
a=(b0)?b:-b;
當b0時,a=b;當b不大於0時,a=-b;這就是條件表達式。其實上面的意思就是把b的絕對值賦值給a。
逗號運算符
在C語言中,多個表達式可以用逗號分開,其中用逗號分開的表達式的值分別結算,但整個表達式的值是最後一個表達式的值。
假設b=2,c=7,d=5,
a1=(++b,c–,d+3);
a2=++b,c–,d+3;
對於第一行代碼,有三個表達式,用逗號分開,所以最終的值應該是最後一個表達式的值,也就是d+3,為8,所以a=8。對於第二行代碼,那麼也是有三個表達式,這時的三個表達式為a2=++b、c–、d+3,(這是因為賦值運算符比逗號運算符優先級高)所以最終表達式的值雖然也為8,但a2=3。
還有其他的如位邏輯運算符,位移運算符等等,我們等到講位運算時再說明。
優先級和結合性
從上面的逗號運算符那個例子可以看出,這些運算符計算時都有一定的順序,就好象先要算乘除後算加減一樣。優先級和結合性是運算符兩個重要的特性,結合性又稱為計算順序,它決定組成表達式的各個部分是否參與計算以及什麼時候計算。
下面是C語言中所使用的運算符的優先級和結合性:
優先級 運算符 結合性
(最高) () [] – . 自左向右
! ~ ++ — + – * sizeof 自右向左
* / % 自左向右
+ – 自左向右
自左向右
= = 自左向右
(最低) , 自左向右
C語言中邏輯運算符用法
首先邏輯運算符的優先級是非
與
或,對於“與”只有運算符兩邊同時為真(如果兩邊是表達式則結果都為非0)結果為真即為1,例如:5+3
1
結果就為1,1-1
1結果就為0;
對於“或”有一個為真結果就為真即結果為1;例如:2+1
||
0結果為1;3-3
||
2-2結果為0
非沒有什麼好說的就是取反
在C語言中邏輯運算符是如何表達的?
邏輯運算符是根據表達式的值來返回真值或是假值。其實在C語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。
符號 功能 &&邏輯與 1 邏輯或 !邏輯非 例如: 5!3; 011-25;
!4;
當表達式進行&&運算時,只要有一個為假,總的表達式就為假,只有當所有都為真時,總的式子才為真。當表達式進行日運算時,只要有一個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!)運算是把相應的變量數據轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。
還有一點很重要,當一個邏輯表達式的後一部分的取值不會影響整個表達式的值時,後一部分就不會進行運算了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/249478.html