修飾區域性變數,會使函式呼叫之間保持區域性變數的值。
修飾全域性變數時,會使變數的作用域限制在宣告它的檔案內。
暫存器存在於cpu中,速度很快,數目有限,計算機做運算時,必須將資料讀入暫存器才能運算。
#include // 函式宣告
void func(void);
static int count = 10; /* 全域性變數 */
int main()
return 0;
}// 函式定義
void func( void )
{ static int i = 5; // 區域性靜態變數
i++;
std::cout << "變數 i 為 " << i ;
std::cout << " , 變數 count 為 " << count << std::endl;
/*輸出: (如果沒有static,則變數is始終為6)
變數 i 為 6 , 變數 count 為 9
變數 i 為 7 , 變數 count 為 8
變數 i 為 8 , 變數 count 為 7
變數 i 為 9 , 變數 count 為 6
變數 i 為 10 , 變數 count 為 5
變數 i 為 11 , 變數 count 為 4
變數 i 為 12 , 變數 count 為 3
變數 i 為 13 , 變數 count 為 2
變數 i 為 14 , 變數 count 為 1
變數 i 為 15 , 變數 count 為 0
*/
(算術運算子,關係運算子,邏輯運算子,賦值運算子,雜項運算子,位運算子。)
算術運算子:
假設變數 a 的值為 10,變數 b 的值為 20,則:
運算子描述例項+
把兩個運算元相加
a + b 將得到 30
-從第乙個運算元中減去第二個運算元
a - b 將得到 -10
*把兩個運算元相乘
a * b 將得到 200
/分子除以分母
b / a 將得到 2
%取模運算子,整除後的餘數
b % a 將得到 0
++自增運算子,整數值增加 1
a++ 將得到 11
--自減運算子,整數值減少 1
a-- 將得到 9
關係運算子:
假設變數 a 的值為 10,變數 b 的值為 20,則:
運算子描述
例項==
檢查兩個運算元的值是否相等,如果相等則條件為真。
(a == b) 不為真。
!=檢查兩個運算元的值是否相等,如果不相等則條件為真。
(a != b) 為真。
>
檢查左運算元的值是否大於右運算元的值,如果是則條件為真。
(a > b) 不為真。
<
檢查左運算元的值是否小於右運算元的值,如果是則條件為真。
(a < b) 為真。
>=
檢查左運算元的值是否大於或等於右運算元的值,如果是則條件為真。
(a >= b) 不為真。
<=
檢查左運算元的值是否小於或等於右運算元的值,如果是則條件為真。
(a <= b) 為真
邏輯運算子(條件判斷)
假設變數 a 的值為 1,變數 b 的值為 0,則:
運算子描述
例項&&
稱為邏輯與運算子。如果兩個運算元都非零,則條件為真。
(a && b) 為假。
||稱為邏輯或運算子。如果兩個運算元中有任意乙個非零,則條件為真。
(a || b) 為真。
!稱為邏輯非運算子。用來逆轉運算元的邏輯狀態。如果條件為真則邏輯非運算子將使其為假。
!(a && b) 為真。
賦值運算子:
運算子描述例項
=簡單的賦值運算子,把右邊運算元的值賦給左邊運算元
c = a + b 將把 a + b 的值賦給 c
+=加且賦值運算子,把右邊運算元加上左邊運算元的結果賦值給左邊運算元
c += a 相當於 c = c + a
-=減且賦值運算子,把左邊運算元減去右邊運算元的結果賦值給左邊運算元
c -= a 相當於 c = c - a
*=乘且賦值運算子,把右邊運算元乘以左邊運算元的結果賦值給左邊運算元
c *= a 相當於 c = c * a
/=除且賦值運算子,把左邊運算元除以右邊運算元的結果賦值給左邊運算元
c /= a 相當於 c = c / a
%=求模且賦值運算子,求兩個運算元的模賦值給左邊運算元
c %= a 相當於 c = c % a
<<=
左移且賦值運算子
c <<= 2 等同於 c = c << 2
>>=
右移且賦值運算子
c >>= 2 等同於 c = c >> 2
&=按位與且賦值運算子
c &= 2 等同於 c = c & 2
^=按位異或且賦值運算子
c ^= 2 等同於 c = c ^ 2
|=按位或且賦值運算子
c |= 2 等同於 c = c | 2
雜項運算子:
運算子描述
sizeof
sizeof 運算子 返回變數的大小。例如,sizeof(a) 將返回 4,其中 a 是整數。
condition ? x : y
條件運算子 如果 condition 為真 ? 則值為 x : 否則值為 y。
,逗號運算子 會順序執行一系列運算。整個逗號表示式的值是以逗號分隔的列表中的最後乙個表示式的值。
.(點)和 ->(箭頭)
成員運算子 用於引用類、結構和共用體的成員。
cast
強制轉換運算子 把一種資料型別轉換為另一種資料型別。例如,int(2.2000) 將返回 2。
&指標運算子 & 返回變數的位址。例如&a; 將給出變數的實際位址。
*指標運算子 * 指向乙個變數。例如,*var; 將指向變數 var。
位運算子; 作用於位,並逐位執行操作
假設變數 a 的值為 60,變數 b 的值為 13,則:
運算子描述例項&
如果同時存在於兩個運算元中,二進位制 and 運算子複製一位到結果中。
(a & b) 將得到 12,即為 0000 1100
|如果存在於任一運算元中,二進位制 or 運算子複製一位到結果中。
(a | b) 將得到 61,即為 0011 1101
^如果存在於其中乙個運算元中但不同時存在於兩個運算元中,二進位制異或運算子複製一位到結果中。
(a ^ b) 將得到 49,即為 0011 0001
~二進位制補碼運算子是一元運算子,具有"翻轉"位效果,即0變成1,1變成0。
(~a ) 將得到 -61,即為 1100 0011,乙個有符號二進位制數的補碼形式。
<<
二進位制左移運算子。左運算元的值向左移動右運算元指定的位數。
a << 2 將得到 240,即為 1111 0000
>>
二進位制右移運算子。左運算元的值向右移動右運算元指定的位數。
a >> 2 將得到 15,即為 0000 1111
C 儲存類與運算子
儲存類定義 c 程式中變數 函式的範圍 可見性 和生命週期 auto儲存類 auto 儲存類是所有區域性變數預設的儲存類。register 儲存類用於定義可能儲存在暫存器中的變數,這用於定義經常訪問的如計數器 即定義全域性變數 static用於定義能在程式執行過程中都有效的變數,而不必使編譯器在每次...
C 儲存類與運算子
儲存類定義 c 程式中變數 函式的範圍 可見性 和生命週期 auto儲存類 auto 儲存類是所有區域性變數預設的儲存類。register 儲存類用於定義可能儲存在暫存器中的變數,這用於定義經常訪問的如計數器 即定義全域性變數 static用於定義能在程式執行過程中都有效的變數,而不必使編譯器在每次...
Swift語法 基本運算子
1 賦值運算子 與 c 語言和 objective c 不同,swift 的賦值操作並不返回任何值。所以以下 更優化了.if x y算術運算子 2 與 c 語言和 objective c 不同的是,swift 預設情況下不允許在數值運算中出現溢位情況。但是你可以使用 sw ift 的溢位運算子來實現...