C 语言通过提供大量的运算符来支持我们对数据进行处理,前边我们将一个值存放到变量中,使用的是赋值运算符。
C 语言中最常用的运算符——算数运算符。
这里有几点要跟大家说一下:
因为键盘上没有乘号和除号两个按键,所以用星号(*)和斜杠(/)代替,这几乎是潜规则了。
对于整数间的除法是采取直接舍弃小数部分的方式,而不是什么四舍五入噢。而且被除数不能为零。
例
#include<stdio.h>
int main(void)
{
printf("%d\n", 5 / 3);
system("pause");
return 0;
}
对于浮点数间的除法则能获得一个相对逼近结果的值(如果除不尽或位数特别多的话)。
百分号(%)在这里是表示求余数的意思,但求余运算符要求两边的操作数都要是整数,其结果也是整数。
何谓“目”?
大家可能看到有些运算符后边写双目,有些写单目,那么什么是目呢?
我们把被运算符作用的运算对象称之为操作数,比如 1 + 2,那么 1 和 2 就是被加法运算符(+)作用的两个操作数。我们说一个运算符是双目运算符还是单目运算符,就是看它有多少个操作数。
表达式和语句
用运算符和括号将操作数连接起来的式子,我们称之为表达式。如
1 + 1
‘a’ + ‘b’
a + b 变量相加,是把变量里面存储的数据相加
a + ‘b’ + pow(a, b) * 3 / 4 + 5
最后一个表达式,先计算谁?后计算谁?这就涉及到计算的优先级和结合性
见https://blog.youkuaiyun.com/alex5153/article/details/104074690
#include<stdio.h>
#include<math.h>
int main(void)
{
int i, j, k;
i = 1 + 2;
j = 1 + 2 * 3;
k = i + j + -1 + pow(2, 3);
printf("i=%d\n",i);
printf("j=%d\n",j);
printf("k=%d\n", k);
system("pause");
return 0;
}
一个表达式里有多个运算符。先乘除后加减,有括号先算括号里。多个括号由里到外。完全与数学相同
除法和求余,除数不能为零
语句可以简单理解成带分号的句子。分号表示该句在哪里结束,下句在哪里开始。
类型转换
当一个运算符的几个操作数类型不同时,编译器需要将它们转换为同一类型,才能进行运算。通常情况下,编译器会将占用坑位比较小的操作数,先转换为与坑位较大的操作数的相同类型,然后再进行运算。这样做的目的就是为了确保计算的精确度。
例如1+2.0会将整型转换成浮点型。
除了编译器帮你自动转换不同类型的操作数之外,C 语言还允许你强制转换操作数的数据类型。做法就是在操作数的前边用小括号将目标数据类型括起来。
如1+int(1.8)
//两数相除结果为小数,怎么用浮点型输出?这例结果为6.00。
#include<stdio.h>
int main(void)
{
float a;
printf("%.2f\n", a = 20 / 3);
system("pause");
return 0;
}
编译器执行过程是整型变量相除,结果就是整型,商是小数就把小数部分截断舍弃,不会给你四舍五入。20/3为6。再用浮点型输出为6.00
//两数相除结果为小数,怎么用浮点型输出?将其中一个计算数写成浮点型。20是整型,20.0是浮点型
#include<stdio.h>
int main(void)
{
float a;
printf("%.2f\n", a = 20.0 / 3);
system("pause");
return 0;
}
//两数相除结果为小数,怎么用浮点型输出?或者把其中一个计算数前面加(float)强制转换
#include<stdio.h>
int main(void)
{
float a;
printf("%.2f\n", a = (float)20 / 3);
system("pause");
return 0;
}
//两数相除结果为小数,怎么用浮点型输出。另一种写法,其中一个变量前加(float)强制转换
#include<stdio.h>
int main(void)
{
int a = 20, b = 3;
printf("%.2f\n", (float)a / b);
system("pause");
return 0;
}
可以得知,如果两个整型相除结果不为整。编译器并不会自动用浮点输出。更不会四舍五入。得我们程序员自己操心结果是不是为浮点型。单把printf()里的%d改为%f没用。必须我们手动把参与计算的其中一个转换成浮点型。
//摄氏度转换华氏度程序
#include <stdio.h>
int main(void)
{
float fah, cel;
printf("请输入摄氏度:");
scanf("%f", &cel);
fah = 9.0 / 5.0 * cel + 32.0;
printf("转换为华氏度是:%.2f\n", fah);
system("pause");
return 0;
}
//'b'字符变量在c语言中视为数字,与ASC码对应.可以直接放进表达式参与运算
#include<stdio.h>
int main(void)
{
int a = 2, b = 100;
printf("%f\n", (float)a /'b');
system("pause");
return 0;
}
//再输出'b'的值看一下,以整型输出
#include<stdio.h>
int main(void)
{
int a = 2, b = 100;
printf("%f\n", (float)a /'b');
printf("%d\n", 'b');
system("pause");
return 0;
}
//键盘输入一个四位数,求这个数的四个位上的四个数的和
#include<stdio.h>
int main(void)
{
int n;
int num1, num2, num3, num4;/*分别定义千位,百位,十位,个位的数字*/
printf("请输入一个四位数\n");
scanf("%d", &n);
num1 = n / 1000;
num2 = n / 100 % 10;
num3 = n / 10 % 10;
num4 = n % 10;
printf("每一位的数分别为:\n%d\n%d\n%d\n%d\n", num1, num2, num3, num4);
printf("这四个数的和为:%d\n", num1 + num2 + num3 + num4);
system("pause");
return 0;
}