C 知识量:16 - 74 - 317
C用运算符表示算术运算,C中用于基本算术运算的运算符有:=、+、-、*和/(赋值、加、减、乘、除)。在C中没有指数运算符,但是可以使用标准数学库中的pow()函数进行指数运算。
赋值运算符写作“=”,在C语言中,“=”并不意味着相等,而是一个赋值运算符,例如:
car = bmw;
以上式子读作:将值bmw赋给变量car。=号左边是一个变量,右边是赋给该变量的值。
在C中类似x=x+1;这样的语句是完全正确的,因为可以将变量加1的结果赋值给自己,“=”不是等于的意思。
赋值表达式语句的目的是把值存储到内存位置上。用于存储值的数据存储区域统称为数据对象,而使用变量名是标识对象的一种方法。使用赋值运算符时应当了解以下概念:
左值:=左边的值,一定是一个可修改的左值,用于标识可修改的对象。可以称左值为对象定位值。
右值:=右边的值,指的是能赋值给左值的量,且本身不是左值。可以是常量、变量或其他可以求值的表达式(例如:函数调用)。
在C语言中可以进行多重赋值操作,例如:
number1 = number2 = number3 = 7;
“+”称为加法运算符,用于加法运算,作用是使其两侧的值相加,例如:
#include <stdio.h> int main(void) { printf("%d", 5 + 12); system("pause"); return 0; }
运行结果为:
17
在加法运算中,相加的值可以是变量,也可以是常量,例如:
#include <stdio.h> int main(void) { int x = 23; int y = 52; printf("%d", x + y); system("pause"); return 0; }
运行结果为:
75
“-”称为减法运算符,用于减法运算,作用是使其左侧的数减去右侧的数,例如:
#include <stdio.h> int main(void) { int x = 23; int y = 52; printf("%d", y - x); system("pause"); return 0; }
运行结果为:
29
+和-运算符都被称为二元运算符,它们需要两个运算对象才能完成操作。
减号还可以标明或改变一个值的代数符号,例如:如果a=-1,b=-a,那么b=1。以这种方式使用的负号称为一元运算符,它只需要一个运算对象。此外,一元+运算符不会改变运算对象的值或符号,例如:如果a=+1,那么a=1,但这也是合法的。
符号“*”表示乘法,例如:
#include <stdio.h> int main(void) { int x = 8; int y = 5; printf("%d", x * y); system("pause"); return 0; }
运行结果为:
40
“/”表示除法。“/”左侧的值是被除数,右侧的值是除数。整数的除法和浮点数除法不同,浮点数的除法结果是浮点数,而整数的除法结果是整数。问题是整数没有小数部分,如果整数的除法运算出现除不尽的情况,结果中的小数部分会被舍弃,称为截断。例如:
#include <stdio.h> int main(void) { int x = 8; int y = 5; float a = 51.2; float b = 3.5; printf("x/y=%d\n", x / y); printf("a/b=%f\n", a / b); printf("a/x=%f", a / x); system("pause"); return 0; }
运行结果:
x/y=1 a/b=14.628572 a/x=6.400000
由上述结果可以看到,整数除法的余数被完全截取了,不是四舍五入,而是只留下整数部分。其中,第三个式子是浮点数除以整数的混合计算,其结果仍然是浮点数。实际上,计算机不能真正用浮点数除以整数,编译器会在计算前将两个运算对象转换成相同的类型再计算。对于负数的整数除法,目前,C99标准规定,使用趋零截断。例如:应把-5.6转换成-5。
对于各种算术运算符的操作顺序,C语言有明确规定,通过运算符的优先级来解决。每个运算符都有自己的优先级,对于算术运算,乘法和除法优先于加法和减法;对于相同优先级的算术计算,则根据运算符在语句中的顺序来决定。
C语言中,算术运算符的优先级(从高到低):
运算符 | 结合律 |
---|---|
() | 从左往右 |
+ - (一元) | 从右往左 |
* / | 从左往右 |
+ - (二元) | 从左往右 |
= | 从右往左 |
注意:正号(加号)和负号(减号)的两种不同用法。结合律说明了运算符如何与算法对象结合。当两个运算符共享一个运算对象时,优先级和结合律决定了先进行哪项运算。要改变计算顺序,可以使用圆括号,它的优先级最高。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6