操作符
C语言提供了非常丰富的操作符,使得C语言使用起来非常灵活
操作符两侧的数叫作操作数
算术操作符
就是加+减-乘*除/和取模%
7模2就是7除以2得到的余数:
取模操作符%的两端的操作数只能是整数
除号/的两端是整数的时候,执行的是整数除法;两端的操作数只要有一个浮点数,就会执行浮点数的除法:
在%后可写.1f表示打印小数点后一位,小数点后两位以此类推
移位操作符
分别是左移<<和右移>>,使用移位操作符涉及到二进制
位操作符
分别是&、^、|
赋值操作符
赋值=用于对变量进行初始化和赋值
+=相当于对变量的初始值进行加法:
-=、*=、/=、&=、^=、|=的含义同理,对变量初值进行=前面的运算
模等%=也是可以的
两侧都有操作数的操作符称为双目操作符
单目操作符
即只有一个操作数的操作符:
在C语言中,0表示假,非0表示真
定义一个初始为假的变量flag,如果flag为假则把假变成真,打印hehe,真即执行(if为真才执行打印):
如果flag为真则把flag变成假,假即结束:
sizeof用于计算变量所占空间大小,既可以打印变量本身,也可以打印类型
试试在一个类型里打印两个变量,结果还是4,因为整型就占4字节
定义一个包含十个整型元素的数组arr,因为整型占4字节,所以sizeof之后打印出40;
单独sizeof数组arr中的第一个元素arr[0]就会打印出一个整型元素的大小(4);
数组的总大小/数组的单个元素大小=数组内元素的总个数(10):
++后置:表示先赋值后自增
b被赋值a的初始值10后,a再进行了自行加一
相对的,++前置表示先自增后赋值
--同理
(类型)强制类型转换,将本来不是该类型的数强制转换成括号中的类型:
关系操作符
下例中,当if括号内使用一个等号时if括号内满足条件(a为不等于0的真值),打印字符:
当if括号内使用两个等号时,表示测试a是否等于10,因为a等于3不等于10,所以不打印字符:
但是这两个代码一起打的时候都输出了字符,不知道怎么回事
逻辑操作符
有两个:与(并)和或
如果a与b都为真,打印:
如果a或b为真,打印:
条件操作符(又称三目操作符)
exp是表达式,即表达式1 ? 表达式2 : 表达式3
如果表达式1为真,则表达式2算,表达式3不算;如果表达式1为假,则表达式2不算,表达式3算
弹幕有人理解:如果表达式1为真则返回并执行表达式2,如果表达式1为假则返回并执行表达式3
可以看成只有0和1两种结果的if语句
打印a和b的较大值:
逗号表达式
就是用逗号隔开的一串表达式
exp1, exp2, exp3, ...expN
逗号表达式的特点是从左到右依次执行,整个表达式的结果是最后一个表达式的结果
结果就是2+1=3
把最后一个表达式改成c++,我认为也应该打印3,但是打印的是2
因为c赋值为之前c的值2,之后c再进行自增,但是与c的赋值无关了,本质上是c=c,后面如果用到c,c的值才是3
改成++c之后又打印出3了
下标引用操作符[]
当一个数组arr[]创建好之后,[]中的数字就是数组中元素的下标
对于数组中的第四个元素arr[3],arr和3就是[]的两个操作数
函数调用操作符()
在()中输入函数自变量的值表示调用函数
还是相加的函数:
主函数中只需要定义需要调用的函数Add,里面直接输入数字即可,不用再另外定义新的变量值了
其中Add、2、3都是()的操作数
所以调用函数的时候一定要有函数调用操作符()
常见关键字
C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己不能创造关键字
变量命名的原则
1.有意义
2.变量的名字必须由字母或数字或下划线组成,不能有特殊字符。同时不能以数字开头
3.变量名不能是关键字