21天學習C語言-第四天

語句,表達式和運算符。lua

語句(Statements)

C中語句指的是一個讓計算機執行某任務的完整指令,通常來講一行爲一個語句,以分號結尾。栗子:code

x =  2 + 3; //計算機執行2+3並存到x中,一個簡單的語句

如下各寫法,操做是同樣的:字符串

x=2+3; //變量和操做數之間沒有空格
x = 2 + 3; //變量和操做數之間有空格
x    =
2
+
3; //變量和操做數不在一行

C不關心語句中的空格,編譯器只識別字符,會自動忽略空格。處於可讀性的考慮,建議使用第二種寫做方式。編譯器並不會忽略常量中的空格,好比:編譯器

"HELLO WORLD, NICE TO MEET YOU!" //單詞之間的空格不會被忽略掉

特殊狀況也存在多行爲一個語句,而且有不以分號結尾的語句。例子:數學

// 不以分號結尾
#include<stdio.h>
#define PI 3.14
// 一個語句折行,雖然很差看,可是合法
printf(
    "hello world!"
);
// 在字符串中直接折行是不合法的
printf(「Hello, 
world!」);
// 若是須要折行,在折行處添加\
printf(「Hello,\ 
world!」);

空語句(Null Statements)就是什麼也不作的語句,直接放置一個分號;,表示當前行的代碼不作任何操做。
複合語句(Compound Statements)是多個語句在一塊兒組成的一個語句塊,差很少全部的程序中都包含了複合語句,例子:it

{
    x = 2;
    y = x + 1;
}

表達式(Expressions)

表達式是計算數值的任何東西(按原文直譯),感受就是數據自己,和存儲數據的變量,常量都是表達式,同時也包含數據計算的操做。
簡單表達式(Simple Expressions)是單一組成,好比變量,常量等。io

PI // 常量π
0  // 數字
name // 變量

複雜表達式(Complex Expressions)與單一相對,由多個單一組成。編譯

x + y
z = x + 10;

運算符(Operators)

運算符是命令計算機對操做數執行對應操做的符號。變量

賦值運算符(Assignment Operator)

賦值運算符就是等號(=),把一個值給一個變量。程序

x = y

數學運算符(Mathematical Operators)

數學運算符顧名思義,進行數學運算的符號。C中數學運算包括兩個一元運算符(Unary Mathematical Operators)和5個二元運算符(Binary Mathematical Operators)
一元運算符表示操做數只有一個的運算符,既++和--,也就是你們熟知的自增和自減運算。

int x = 10, y = 9;
x ++; // 11
y --; // 8

二元運算符操做數有兩個,包括加(+)減(-)乘(*)除(/)和求餘(%)。

int x = 10, y = 5, z;
z = x + y; // 15
z = x - y; // 5
z = x * y; // 50
z = x / y; // 2
z = x % y; // 0

運算符的優先級(Precedence)

這裏的優先級基本遵循了數學運算的優先級,括號最好,其次是乘除,最後是加減。

x = 4 + 5 * 3; //19

比較特殊的是++,--和%,++,--的優先級高於乘除,求餘和乘除相同。

z = 12 % 5 * 2; // 4, 因爲是同級,從左到右計算,先求餘,而後相乘

int x = 5, y;
y = 2 * ++x; //12, ++優先計算

若是是嵌套括號,則內部的優先級高於外部,由內到外依次計算。

x = 25 - (2 * (5 + (4 / 2))); // 11

關係運算符(Relational Operators)

關係運算符就是咱們經常使用的比較大小,是否相等的運算符,常見於if語句中。包括等於(==),大於(>),小於(<),大於等於(>=),小於等於(<=)和不等於(!=)。

if (age>=18) {
    printf("%s", "成年人!"); 
}

if語句

if語句用來控制程序的運行。可單一使用if結構,也可與else或者else if一塊兒使用。整個if語句結構執行完畢以後,繼續執行if結構以後的代碼。

// if的執行部分不用大括號包裹,爲了可讀性,不建議這樣寫
if (x > y) 
    y = x;
// 推薦
if (x > y) 
{
     y = x;
}
// else if
int x = 10;
if (x > 10) 
{
    printf("x大於10");
}
else if(x > 5)
{
    printf("x大於5");
} 
else
{
    printf("x小於5");
}
printf("if語句執行完畢");

計算關係表達式(Evaluating Relational Expressions)

有if的地方就有true和false,true和false對應到數字就是1和0。

a = (5 == 5); // a等於1
a = (5 != 5); // a等於0

另外,不等於0的數字都認爲是true,包括負數。有些人認爲0是分界線,大於0纔是true,這是不正確的。-1作爲if的條件,是按true進行處理的。

關係運算符優先級

在if條件中,通常不僅有關係運算,還包含數學運算,數學運算的優先級高於關係運算。

if (x + 2 > y) //先算x + 2

等於和不等於的優先級低於大於小於的比較。

x == y > z //先計算y > z

邏輯運算符(Logical Operators)

邏輯運算符有三個,與(&&)或(||)非(!)。

x > 2 && y < 5 //兩個條件同時成立時是true
x > 2 || y < 5 //兩個條件有一個成立時是true
!(x > 2) // 條件不成立時是true

邏輯運算符的優先級比較低,以前提到的優先級都高於邏輯運算符,! > && > ||。

符合賦值運算符(Compound Assignment Operators)

符合賦值運算符是當某個變量自身進行數學運算時的一種簡化寫法。如:

x = x + 5;
x += 5;

條件運算符(Conditional Operator)

條件運算符是簡單if的一種簡化,經常使用於二選一的時候。例子:

int x = 5;
int y = x > 0 ? 1 : 0;

當x大於5的時候y等於1,不然y等於0。

內容不復雜,但做者的講解很詳細,篇幅很大!