C语言运算符
一、C语言的运算符
C语言有六种运算符,如下:
1)算术运算符;
2)赋值运算符;
3)sizeof运算符;
4)关系运算符;
5)逻辑运算符;
6)位运算符。
本章将只介绍算术运算符、赋值运算符和sizeof运算符,关系运算符和逻辑运算符放在其它章节中介绍,位运算符极少使用,了解即可,不深入学习。
二、算术运算符
下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 18,变量 B 的值为5,则:
运算符 | 描述 | 实例 |
---|---|---|
+ | 两个数相加 | A+B 将得到 23 |
- | 一个数减另一个数 | A-B 将得到 13 |
* | 两个数相乘 | A*B 将得到 90 |
/ | 分子除以分母 | A/B 将得到 3.6 |
% | 余数运算符,整除后的余数 | B%A 将得到 3 |
++ | 自增运算符,整数值增加 1 | A++ 将得到 19 |
– | 自减运算符,整数值减少 1 | A-- 将得到 17 |
示例(book15.c)
1 | /* |
运行效果
变量的自增或自减有两种写法:
变量名++; // 表示在本次使用变量后再自增;
++变量名; // 表示在本次使用变量前自增;
变量名–; // 表示在本次使用变量后再自增;
--变量名; // 表示在本次使用变量前自减;
示例(book16.c)
1 | /* |
运行效果
三、赋值运算符
下表列出了 C 语言支持的赋值运算符:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | 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语言的基本数据类型,包括char、int和double,字符串(字符数组)不能使用赋值运算符。
示例(book17.c)
1 | /* |
运行效果
四、sizeof运算符
sizeof是C语言的关键字,它用来计算变量(或数据类型)在当前系统中占用内存的字节数。
sizeof不是函数,产生这样的疑问是因为sizeof的书写确实有点像函数,sizeof有两种写法:
用于数据类型
1 | sizeof(数据类型); |
数据类型必须用括号括住。
1 | printf("字符型变量占用的内存是=%d\n",sizeof(char)); // 输出:字符型变量占用的内存是=1 |
用于变量
1 | sizeof(变量名); |
变量名可以不用括号括住,带括号的用法更普遍,大多数程序员采用这种形式。
1 | int ii; |
五、运算符的优先级
在±*/四则运算符中,*/的优先级高于±,在C语言中,其它的运算符都有优先级,我不想介绍它们的优先级,我写了二十年的程序,也记不住各种运算符的优先级的关系。
我不建议程序员记住各种运算符的优先级,而是用括号解决全部的问题,括号的优先级是最高的,括号中的表达式会优先执行,这样各个运算符的执行顺序就一目了然了。
1 | int d = a + (b * c); |
六、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道