运算
进行加法运算的+和进行乘法运算的*等符号,称为运算。本章我带大家进入基本运算符的学习
运算符和操作数
读取两个整数的值,然后显示出它们的和、差、积、商和余数。
代码如下:
#include<stdio.h> int main() { int x = 0; int y = 0; puts("请输入两个整数。"); printf("整数x:"); scanf("%d", &x); printf("整数y:"); scanf("%d", &y); printf("x+y=%d\n", x + y); printf("x-y=%d\n", x - y); printf("x*y=%d\n", x * y); printf("x/y=%d\n", x / y); printf("x%%y=%d\n", x % y); return 0; }
像+ - * / %这样可以进行运算的符号称为运算符,作为运算对象的变量或常量称为操作符。
运算符左边的操作数称为第一操作数或者左操作数,运算符右侧的操作数称为第二操作数或者右操作数。
乘除运算符和加减运算符
上述代码中使用的5个运算符,可以大致的分为乘除运算符和加减运算符。
除法运算的商和余数
除法运算符有两种。通过除法运算符求商的运算符是/。
整数/整数 商的整数部分
除法运算只取商的整数部分,也就是说会舍弃小数点以后的部分。例如:5/3的结果是1,3/5的结果是是0。
整数%整数 余数
%是求余数运算符。例如:5%3的结果是2,3%5的结果是3。
使用printf函数输出%
在printf函数中的%符号具有转换说明的功能,当不需要转换的时候要写成%%,这样就可以输出%这个符号了。
获取整数的最后一位数字
通过应用求余数的运算来获取整数的最后一位数字。例如:
代码如下:
#include<stdio.h> int main() { int n = 0; printf("请输入一个整数:"); scanf("%d", &n); printf("最后一位数是%d。", n % 10); return 0; }
运行结果如下:
进行除法运算的/运算符和%运算符的结果依赖与编译器。
当两个操作数都是正数的时候
不管是那种编译器,商和余数都是正数。如下:
两个操作数至少有一个为负数
至于/运算符的结果是”小于代数商的最大整数“还是”大于代数商的最小整数“,要取决于编译器。例如:
多个转换说明
读取两个整数,并显示它们的商和余数。
代码如下:
#include<stdio.h> int main() { int a = 0; int b = 0; puts("请输入两个整数"); scanf("%d %d", &a, &b); printf("%d除以%d得%d余%d。\n", a, b, a / b, a % b); return 0; }
运行结果如下:
单目操作符
对读取的整数进行符号取反操作,并输出结果。
代码如下:
#include<stdio.h> int main() { int n = 0; printf("请输入一个整数:"); scanf("%d", &n); printf("符号取反之后的值是%d。\n", -n); return 0; }
运行结果如下:
根据我们操作符操作的操作数来确定是单目、双目还是三目操作符。在上述代码种的-运算符,就是对符号进行取反操作。
表达式和赋值表达式
表达式由变量和常量,以及连接它们的运算符组成。例如:
x+32 进行加法运算的表达式
x+32和x、32都是表达式
c=x+32 赋值表达式
表达式语句
C语言规定语句必须以分号结尾,因此前面提到的赋值表达式写成以下形式,才能成为正确的语句。
c=x+32; 表达式语句
这种由表达式和分号组成的语句称为表达式语句。
数据类型
数据类型有很多浮点型和整数型。下面主要讲下double类型。
求平均值
读取两个数,求出它们的平均值
代码如下:
#include<stdio.h> int main() { int a = 0; int b = 0; puts("请输入两个整数:"); scanf("%d %d", &a, &b); printf("它们的平均值是%d。\n", (a + b) / 2); return 0; }
运行结果:
将表达式a+b括起来的(),优先级运算的标记。如果该表达式是a+b/2,结果就变成了求a和b/2的和,这与我们平时所做的数学计算相同,及要遵循先乘除后加减。
数据类型
现实生活中的平均值一般都带有小数,但是我们通过上面的案例可以得知,小数点以后的部分被舍弃了,只是留下了整数部分,这就是int类型的特征。
C语言中以浮点数表示实数,浮点数有几种类型,我们主要讲下双精度浮点数double。代码如下:
#include<stdio.h> int main() { int n = 0; double x = 0; n = 9.99; x = 9.99; printf("int 型变量n的值:%d\n", n); printf(" n/2:%d\n", n / 2); printf("double型变量x的值:%f\n", x); printf(" x/2.0:%f\n ", x / 2.0); return 0; }
运行结果:
我们声明一个int类型变量n和一个double类型变量x,并把9.99作为值赋给他们,当给一个int类型的变量的时候,小数点后面的部分就被舍弃了。当使用它进行除法运算的时候,小数部分还是会被舍弃的。
同时还需要注意的是使用printf函数打印浮点型数据的时候,转换说明不能用%d要使用%f。
数据类型和对象
从前面的程序可以看出来int类型只能存放整数,即使把实数传给它,也只能保留整数部分。与之相对,浮点数中的double类型可以用来存储包含小数的实数值。
总结