運算子是一種告訴編譯器執行特定的數學或邏輯操作的符號。c 語言內建了豐富的運算子,並提供了以下型別的運算子:
本章將逐一介紹算術運算子、關係運算子、邏輯運算子、位運算子、賦值運算子和其他運算子。
下表顯示了 c 語言支援的所有算術運算子。假設變數a的值為 10,變數b的值為 20,則:
請看下面的例項,了解 c 語言中所有可用的算術運算子:
#include int main()
當上面的**被編譯和執行時,它會產生下列結果:
line 1 - c 的值是 31line 2 - c 的值是 11line 3 - c 的值是 210line 4 - c 的值是 2line 5 - c 的值是 1line 6 - c 的值是 21line 7 - c 的值是 22
以下例項演示了 a++ 與 ++a 的區別:
#include int main()
以上程式執行輸出結果為:
先賦值後運算:line 1 - c 的值是 10line 2 - a 的值是 11line 3 - c 的值是 10line 4 - a 的值是 9先運算後賦值:line 5 - c 的值是 11line 6 - a 的值是 11line 7 - c 的值是 9line 8 - a 的值是 9
下表顯示了 c 語言支援的所有關係運算子。假設變數a的值為 10,變數b的值為 20,則:
請看下面的例項,了解 c 語言中所有可用的關係運算子:
#include int main() else if ( a < b ) else if ( a > b ) else /* 改變 a 和 b 的值 */ a = 5; b = 20; if ( a <= b ) if ( b >= a ) }
當上面的**被編譯和執行時,它會產生下列結果:
line 1 - a 不等於 bline 2 - a 不小於 bline 3 - a 大於 bline 4 - a 小於或等於 bline 5 - b 大於或等於 a
下表顯示了 c 語言支援的所有關係邏輯運算子。假設變數a的值為 1,變數b的值為 0,則:
請看下面的例項,了解 c 語言中所有可用的邏輯運算子:
#include int main() if ( a || b ) /* 改變 a 和 b 的值 */ a = 0; b = 10; if ( a && b ) else if ( !(a && b) ) }
當上面的**被編譯和執行時,它會產生下列結果:
line 1 - 條件為真line 2 - 條件為真line 3 - 條件為假line 4 - 條件為真
位運算子作用於位,並逐位執行操作。&、 | 和 ^ 的真值表如下所示:
pqp & qp | qp ^ q00000010111111010011
假設如果 a = 60,且 b = 13,現在以二進位制格式表示,它們如下所示:
a = 0011 1100
b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
下表顯示了 c 語言支援的位運算子。假設變數a的值為 60,變數b的值為 13,則:
運算子描述例項&
按位與操作,按二進位制位進行"與"運算。運算規則:
0&0=0; 0&1=0; 1&0=0; 1&1=1;
(a & b) 將得到 12,即為 0000 1100|
按位或運算子,按二進位制位進行"或"運算。運算規則:
0|0=0; 0|1=1; 1|0=1; 1|1=1;
(a | b) 將得到 61,即為 0011 1101^
異或運算子,按二進位制位進行"異或"運算。運算規則:
0^0=0; 0^1=1; 1^0=1; 1^1=0;
(a ^ b) 將得到 49,即為 0011 0001~
取反運算子,按二進位制位進行"取反"運算。運算規則:
~1=0; ~0=1;
請看下面的例項,了解 c 語言中所有可用的位運算子:
#include int main()
當上面的**被編譯和執行時,它會產生下列結果:
line 1 - c 的值是 12line 2 - c 的值是 61line 3 - c 的值是 49line 4 - c 的值是 -61line 5 - c 的值是 240line 6 - c 的值是 15
下表列出了 c 語言支援的賦值運算子:
請看下面的例項,了解 c 語言中所有可用的賦值運算子:
#include void main()
當上面的**被編譯和執行時,它會產生下列結果:
line 1 - = 運算子例項,c 的值 = 21line 2 - += 運算子例項,c 的值 = 42line 3 - -= 運算子例項,c 的值 = 21line 4 - *= 運算子例項,c 的值 = 441line 5 - /= 運算子例項,c 的值 = 21line 6 - %= 運算子例項,c 的值 = 11line 7 - <<= 運算子例項,c 的值 = 44line 8 - >>= 運算子例項,c 的值 = 11line 9 - &= 運算子例項,c 的值 = 2line 10 - ^= 運算子例項,c 的值 = 0line 11 - |= 運算子例項,c 的值 = 2
下表列出了 c 語言支援的其他一些重要的運算子,包括sizeof和? :。
請看下面的例項,了解 c 語言中所有可用的雜項運算子:
#include int main()
當上面的**被編譯和執行時,它會產生下列結果:
line 1 - 變數 a 的大小 = 4line 2 - 變數 b 的大小 = 2line 3 - 變數 c 的大小 = 8a 的值是 4*ptr 是 4b 的值是 30b 的值是 20
運算子的優先順序確定表示式中項的組合。這會影響到乙個表示式如何計算。某些運算子比其他運算子有更高的優先順序,例如,乘除運算子具有比加減運算子更高的優先順序。
例如 x = 7 + 3 * 2,在這裡,x 被賦值為 13,而不是 20,因為運算子 * 具有比 + 更高的優先順序,所以首先計算乘法 3*2,然後再加上 7。
下表將按運算子優先順序從高到低列出各個運算子,具有較高優先順序的運算子出現在**的上面,具有較低優先順序的運算子出現在**的下面。在表示式中,較高優先順序的運算子會優先被計算。
請看下面的例項,了解 c 語言中運算子的優先順序:
#include int main()
當上面的**被編譯和執行時,它會產生下列結果:
(a + b) * c / d 的值是 90((a + b) * c) / d 的值是 90(a + b) * (c / d) 的值是 90a + (b * c) / d 的值是 50
C語言中浮點型在計算機中的儲存
一 浮點型的儲存 在十進位制中我們都學習過科學計數法,比如31.4可以用科學計數法表示就是3.14 10 1。浮點型同樣是採取科學計數法進行表示的。在計算機中,以二進位制數儲存,如1011.10用科學計數法的方式可以寫成1.01110 2 3,因為浮點型還有負數,所以在計算機中表示時還需要加上乙個符...
C語言中計算機的記憶體相關
程式設計的一些基礎知識 1.計算機的記憶體。在程式執行時,組成程式的指令和程式所操作的資料都必須存在機器的記憶體中,成為主記憶體 main memory 或者隨機訪問儲存器 random access memory,ram 還包含一種儲存器,唯讀儲存器 ram,read only memory 比如...
C語言中浮點數在計算機中的儲存
double 的儲存方式是一樣的,下面用 float 做以解釋 任意乙個二進位制浮點數v可以表示成下面形式 v 1 s m 2 e 1 1 s表示符號位,當 s 0,v 為正 當 s 1,v 為負 2 m為有效數字,因為 m是二進位制,大於等於 1,小於2。3 2 e表示指數字 舉例來說 十進位制的...