程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++法式的履行次序構造和關系和邏輯運算符講授

C++法式的履行次序構造和關系和邏輯運算符講授

編輯:關於C++

C++法式的履行次序構造和關系和邏輯運算符講授。本站提示廣大學習愛好者:(C++法式的履行次序構造和關系和邏輯運算符講授)文章只能為提供參考,不一定能成為您想要的結果。以下是C++法式的履行次序構造和關系和邏輯運算符講授正文


C++次序構造法式
【例】求一元二次方程式ax2+bx+c=0的根。a,b,c的值在運轉時由鍵盤輸出,它們的值知足b2-4ac≥0。依據求x1,x2的算法。它可以編寫出以下C++法式:

#include <iostream>
#include <cmath> //因為法式要用到數學函數sqrt,故應包括頭文件cmath
using namespace std;
int main( )
{
 float a,b,c,x1,x2;
 cin>>a>>b>>c;
 x1=(-b+sqrt(b*b-4*a*c))/(2*a);
 x2=(-b-sqrt(b*b-4*a*c))/(2*a);
 cout<<"x1="<<x1<<endl;
 cout<<"x2="<<x2<<endl;
 return 0;
}

運轉情形以下:

4.5 8.8 2.4 ↙
x1=-0.327612
x2=-1.17794

假如法式中要用到數學函數,都要包括頭文件cmath(也能夠用老情勢的頭文件math.h,但倡導應用C++新情勢的頭文件)。在寫法式時,必定要留意將數學表達式准確地轉換成正當的C++表達式。

可以看到:次序構造的法式中的各履行語句是次序履行的。這類法式最簡略,最輕易懂得。

C++關系運算和邏輯運算(關系運算符和邏輯運算符)
常常請求依據某個指定的前提能否知足來決議履行的內容。例如,購物在1000元以下的打九五折,1000元及以上的打九折。

C++供給if語句來完成這類前提選擇。如:

  if amount<1000 tax=0.95; //amount代表購物總額,tax代表扣頭
  else tax=0.9; //若amount<1000,前提知足,tax=0.95,不然tax=0.9
  pay=amount*tax; //pay為實付款

關系運算和關系表達式

下面if語句中的“amount<1000”完成的不是算術運算,而是關系運算。現實上是比擬運算,將兩個數據停止比擬,斷定比擬的成果。“amount<1000”就是一個比擬式,在高等說話中稱為關系表達式,個中“>”是一個比擬符,稱為關系運算符。

C++的關系運算符有:

  •     <    (小於)
  •     <=        (小於或等於)           優先級雷同 (高)
  •     >    (年夜於)
  •     >=        (年夜於或等於) 
  •     ==        (等於)
  •     !=       (不等於)           優先級雷同 (低)

關於優先順序:
前4種關系運算符(<,<=,>,>=)的優先級別雷同,後兩種也雷同。前4種高於後兩種。例如,“>”優先於“==”。而“>”與“<”優先級雷同。
關系運算符的優先級低於算術運算符。
關系運算符的優先級高於賦值運算符。

例如:

  • c>a+b 等效於 c>(a+b)
  • a>b==c等效於(a>b)==c
  • a==b<c等效於a==(b<c)
  • a=b>c 等效於a=(b>c)

用關系運算符將兩個表達式銜接起來的式子,稱為關系表達式。關系表達式的普通情勢可以表現為:

  表達式 關系運算符 表達式

個中的“表達式”可所以算術表達式或關系表達式?邏輯表達式?賦值表達式?字符表達式。例如,上面都是正當的關系表達式:

  a>b, a+b>b+c,(a==3)>(b==5), 'a'<'b', (a>b)>(b<c)

關系表達式的值是一個邏輯值,即“真”或“假”。例如,關系表達式“5==3”的值為“假”,“5>=0”的值為“真”。在C和C++中都用數值1代表“真”,用0代表“假”。假如有以下賦值表達式:

  •     d=a>b 則d獲得的值為1
  •     f=a>b>c  f獲得的值為0

邏輯常量和邏輯變量

C說話沒有供給邏輯型數據,關系表達式的值(真或假)分離用數值1和0代表。C++增長了邏輯型數據。邏輯型常量只要兩個,即false(假)和true(真)。

邏輯型變量要用類型標識符bool來界說,它的值只能是true和false之一。如

  bool found, flag=false; //界說邏輯變量found和flag,並使flag的初值為false
  found=true; //將邏輯常量true賦給邏輯變量found

因為邏輯變量是用症結字bool來界說的,是以又稱為布爾變量。邏輯型常量又稱為布爾常量。所謂邏輯型,就是布爾型。

設立邏輯類型的目標是為了看法式時直不雅易懂。

在編譯體系處置邏輯型數據時,將false處置為0,將true處置為1。是以,邏輯型數據可以與數值型數據停止算術運算。

假如將一個非零的整數賦給邏輯型變量,則按“真”處置,如

  flag=123; //賦值後flag的值為true
  cout<<flag;

輸入為數值1。
邏輯運算和邏輯表達式

有時只用一個關系表達式還不克不及准確表現所指定的前提。

C++供給3種邏輯運算符:
(1) &&  邏輯與(相當於其他說話中的AND)
(2) ||  邏輯或(相當於其他說話中的OR)
(3) !邏輯非(相當於其他說話中的NOT)

邏輯運算舉例以下:

  • a && b若a,b為真,則a && b為真。
  • a||b  若a,b之一為真,則a||b為真。
  • !a 若a為真,則!a為假。

在一個邏輯表達式中假如包括多個邏輯運算符,按以下的優先順序:
(1) !(非)→ &&(與)→ ?(或),即“!”為三者中最高的。
(2) 邏輯運算符中的“&&”和“||”低於關系運算符,“!”高於算術運算符。

例如:

  • (a>b) && (x>y)  可寫成 a>b && x>y
  • (a==b) || (x==y)  可寫成 a==b || x==y
  • (!a) || (a>b)可寫成 !a || a>b

將兩個關系表達式用邏輯運算符銜接起來就成為一個邏輯表達式,下面幾個式子就是邏輯表達式。邏輯表達式的普通情勢可以表現為

  表達式 邏輯運算符 表達式

邏輯表達式的值是一個邏輯量“真”或“假”。後面已解釋,在給出邏輯運算成果時,以數值1代表“真”,以0代表“假”,但在斷定一個邏輯量能否為“真”時,采用的尺度是: 假如其值是0就以為是“假”,假如其值長短0就以為是“真”。例如:
(1) 若a=4,則!a的值為0。由於a的值為非0,被認作“真”,對它停止“非”運算,得“假”,“假”以0代表。
(2) 若a=4,b=5,則a && b的值為1。由於a和b均為非0,被以為是“真” 。
(3) a,b值同前,a-b||a+b的值為1。由於a-b和a+b的值都為非零值。
(4) a,b值同前,!a || b的值為1。
(5) 4 && 0 || 2 的值為1。

在C++中,整型數據可以湧現在邏輯表達式中,在停止邏輯運算時,依據整型數據的值是0或非0,把它作為邏輯量假或真,然後加入邏輯運算。

經由過程這幾個例子可以看出: 邏輯運算成果不是0就是1,弗成能是其他數值。而在邏輯表達式中作為加入邏輯運算的運算對象可所以0(“假”)或任何非0的數值(按“真”看待)。假如在一個表達式中的分歧地位上湧現數值,應辨別哪些是作為數值運算或關系運算的對象,哪些作為邏輯運算的對象。

現實上,邏輯運算符兩側的表達式不只可所以關系表達式或整數(0和非0),也能夠是任何類型的數據,如字符型?浮點型或指針型等。體系終究以0和非0來剖斷它們屬於“真”或“假”。例如'c ' &&  'd'的值為1。

闇練控制C++的關系運算符和邏輯運算符後,可以奇妙地用一個邏輯表達式來表現一個龐雜的前提。例如,要辨別某一年(year)能否為閏年。閏年的前提是相符上面二者之一: ①能被4整除,但不克不及被100整除。②能被100整除,又能被400整除。例如2004? 2000年是閏年,2005? 2100年不是閏年。

可以用一個邏輯表達式來表現:

(year % 4 == 0 && year % 100 != 0) || year % 400 == 0

當給定year為某一整數值時,假如上述表達式值為真(1),則year為閏年;不然year為非閏年。可以加一個“!”用來辨別非閏年:

!((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

若表達式值為真(1),year為非閏年。也能夠用上面的邏輯表達式辨別非閏年:

(year % 4 != 0) || (year % 100 == 0 && year % 400 !=0)

若表達式值為真,year為非閏年。請留意表達式中左面的括號內的分歧運算符(%,!,&&,==)的運算優先順序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved