运算符
运算符就像动词一样,可以导致变量发生变化
算术运算符
常用二元算术运算符,加减乘除 + - * /
余数运算符
余数或模(modules)运算符(%)用于计算整数除法的余数。
int a = 7;
int b = 3;
int c = a%b; // c is now 1
递增和递减运算符
a++;
++a;
前缀版本++a在其他任何求值发生前递增a的值,在表达式的余下部分将使用递增后的值。
后缀版本a++在其他求值发生之后递增a的值,在表达式的余下部分将使用原来的值。
int a = 9;
int b;
b = a++;
int c = 9;
int d;
d = ++c;
优先级
理同数学优先级,乘法和除法具有比加法和减法更高的优先级。
取负运算符
一元减号用于把一个算术值改为它的负值:
int a = 9;
int b;
b = -a; // b is now -9
比较运算符
a > b // true, if a is greater than b
a < b // true, if a is less than b
a >= b // true, if a is greater than or equal to b
a == b // true, if a is equal to b
a != b // true, if a is not equal to b
逻辑运算符
C语言使用短路求值法。表达式从左到右求值。
if ( b < a && CheckSomething () )
{
...
}
逻辑“非”运算符
a = ! expression;
赋值运算符
a = b;
把b的值赋予a。当然,a必须能够被赋值。可以赋值的实体称为左值,因为它们出现在赋值运算符的左边。
/* set up */
float a;
float b[100];
float *c;
struct dailyTemperatures today;
struct dailyTemperatures *todayPtr;
c = &a;
todayPtr = &today;
/* legal lvalues */
a = 76;
b[0] = 76;
*c = 76;
today.high = 76;
todayPtr->high = 76;
转换和强制转换
通过使用强制转换,强制编译器会把变量的值转换成一种不同的类型。
int a = 6;
int b = 4;
float c, d;
c = a / b;
d = ( float )a / ( float )b;
float强制转换令强制编译器把a和b转换成float类型,并执行浮点型除法运算。
其他赋值运算符
C语言还具有结合了算术和赋值运算的简写运算符:
a += b; 等价于 a = a + b;
a -= b; 等价于 a = a - b;
a *= b; 等价于 a = a* b;
a /= b; 等价于 a = a/ b;
表达式和语句
C语言中的表达式和语句大致相当于自然语言中的短句和句子。
表达式
最简单的表达式只有一个常量或变量:
14
bananasPerBunch
每个表达式都有一个值。
j + 14
a < b
distance = rate * time
算术或逻辑表达式的值就是通过执行算术或逻辑运算所得到的任何值。赋值表达式的值就是赋予作为赋值目标的变量的值。
SomeFunction()
函数调用表达式的值是该函数的返回值。
表达式求值
编译器遇到表达式,创建二进制代码,用于计算表达式并求出它的值。
语句
末尾添加分号;,变成语句。
复合语句
{
timeDelta = time2 - time1;
distanceDelta = distance2 - distance1;
averageSpeed = distanceDelta / timeDelta;
}
闭大括号后面没有分号。这种语句称为复合语句。
网友评论