1. 程式人生 > 實用技巧 >《c++入門經典》筆記4

《c++入門經典》筆記4

《c++入門經典》筆記4

第四章 使用表示式、語句和運算子

4.1語句

所有的c++都由語句組成,語句是以分號結尾的命令。語句控制程式的執行流程、評估表示式甚至可以什麼也不做(空語句)。

空白:

在c++程式原始碼中,空格、製表符和換行符統稱為空白。空白旨在讓程式設計師方便閱讀程式碼,編譯器通常忽略他們。

正確的縮排有助於識別程式塊或函式塊的開始和結束位置。

複合語句:

可將多條語句編組,構成一條複合語句,這種語句以{開頭,以}結束。可將複合語句放在任何可使用單條語句的地方。

複合語句中的每條語句都必須以分號結尾,但複合語句本身不能以分號結尾。如:

{
temp = a;
a = b;
b = temp;
}

這條複合語句交換a與b的值,交換時使用變數臨時儲存了一個變數的值。

4.2表示式

表示式是語句中任何返回一個值的部分。如:

z = x = y + 13;

這條語句包含三個表示式:

  • 表示式 y + 13,值被儲存在變數x中;

  • 表示式x = y + 13,它返回變數x的值,而該返回值被儲存在變數z中;

  • 表示式z = x = y + 13,它返回z的值,但是該返回值並未儲存到其他變數中。

    賦值運算子=導致左運算元的值變為右運算元的值

    運算元是一個數學術語,指的是被運算子操作的表示式。

程式清單4.1 Expression.cpp

#include <iostream>

int main()
{
int x = 12, y = 42, z = 88;
std::cout << "Before -- x: " << x << " y: " << y;
std::cout << " z: " << z << "\n\n";
z = x = y + 13;
std::cout<<"After -- x: "<<x<<" y: "<<y;
std::cout<<" z: "<<z<<"\n";
return 0;
}

4.3運算子

運算子是導致編譯器執行操作的符號。

  • 賦值運算子:=(常量可以作為右值,但不能作為左值,比如95 = grade非法)

  • 數學運算子:+、-、*、/、%(%為求模運算子,返回整數除法的餘數)

  • 組合運算子:+=、-=、*=、/=、%=(都是自賦值運算子)

  • 關係運算符:==、!=、>、>=、<、<=

  • 邏輯運算子:&&、||、!

  • 位運算子:&、|、^、~、<<、>>

  • 遞增與遞減運算子:++、--

  • 字首運算子與字尾運算子:遞增運算子++與遞減運算子--若放在變數前面,就稱為字首運算子,放在變數後面則稱為字尾運算子。

    如:++count;中的++為字首運算子,count++;中的++為字尾運算子

    區別在於進行賦值時,字首運算子會在賦值前執行,而後綴運算子會在賦值後執行

    int x = 5;
    int sum = ++x;

    這兩條語句使得x為6;sum為6;

    int x = 5;
    int sum = x++;

    這兩條語句導致sum為5,x為6。

程式清單4.2 Years.cpp

#include <iostream>

int main()
{
int year = 2016;
std::cout<<"The year "<<++year<<" passes.\n";
std::cout<<"The year "<<++year<<" passes.\n";
std::cout<<"The year "<<++year<<" passes.\n";

std::cout<<"\nIt is now"<<year<<".";
std::cout<<" Have the Chicago Cubs won the World Series yet?\n";
std::cout<<"\nThe year "<<year++<<" passes.\n";
std::cout<<"The year "<<year++<<" passes.\n";
std::cout<<"The year "<<year++<<" passes.\n";

std::cout<<"\nSurely the Cubs have won the Series by now.\n";
return 0;
}

運算子優先順序:表就不打了,自己去查,貌似版本挺多。

4.4if-else條件語句

程式清單4.3 Grader.cpp

#include <iostream>

int main()
{
int grade;
std::cout << "Enter a grade (1-100): ";
std::cin >> grade;

if (grade >= 70)
std::cout << "\nYou passed. Hooray!\n";
else
std::cout << "\nYou failed. sigh.\n";
return 0;
}

程式清單4.4 NewGrader.cpp

#include <iostream>

int main()
{
int grade;
std::cout << "Enter a grade (1-100): ";
std::cin >> grade;

if (grade >= 70)
{
if (grade >= 90)
{
std::cout << "\nYou got an A. Great job!\n";
return 0;
}
if (grade >= 80)
{
std::cout << "\nYou got a B. Good work!\n";
return 0;
}
std::cout << "\nYou got a C.\n";
}
else if (grade >= 60)
{
std::cout << "\nYou got a D.\n";
}
else
std::cout << "\nYou got an F. Congratulations!\n";
}