参考:
- 《标准C语言基础教程》(第四版)[美] Gary J.Bronson 著 张永健 等译
- CSDN博客:https://blog.csdn.net/alihouzi/article/details/50467690
1. 前文回顾
首先我们先对上次留下的小问题进行解答,答案其实很简单,和我来看一下代码吧~
#include <stdio.h>
int main() {
double length,width,circumference;
printf("Please input the length: ");
scanf("%lf",&length);
printf("Please input the width: ");
scanf("%lf",&width);
circumference=2*(length+width);
printf("The circumference of this rectangle is: %lf",circumference);
return 0;
}
运行结果:
Please input the length:12
Please input the width:1
The circumference of this rectangle is: 26.000000
Process finished with exit code 0
咦?大家可能会发现,这里的%lf
与上次我们所说的%d
有没有什么关系哇!这次就帮你解答这个问题!
2. 本文概述
在本文接下来的内容中,我将为大家讲述运算符、格式控制符(书上译为控制字符串)以及一些知识的补充。
3. 运算符
所谓运算符,就是用来改变变量值的符号,例如:+、-、*、/、%
等等。下面我说按照参与运算的变量数分成3类:单元运算符、双元运算、多于运算符。当然,我先讲前两个,第三个遇见了再说~
3.1 单元运算符
所谓单元运算符,即只有一个变量参与运算的符号,例如:++、--
。
3.1.1 a++与++a
先来说++
,它分为前++ 和 后++。
大家看一下下列代码就知道这两个符号代表什么以及有什么区别了。
为了避免混淆,我通过三个变量a,b,c
分别代表三种表达式的情况:x=x+1, x=x++, x=++x
#include <stdio.h>
int main() {
int a=1,b=1,c=1;
printf("a=%d, b=%d, c=%d\n",a,b,c);
printf("a+1=%d\n",a+1);
printf("b++=%d\n",b++);
printf("++c=%d\n",++c);
return 0;
}
结果如下:
a=1, b=1, c=1
a+1=2
b++=1
++c=2
3.1.2 a–与--a
再来说--
,它也分为前- - 和 后- -。
大家看一下下列代码就知道这两个符号代表什么以及有什么区别了。
为了避免混淆,我通过三个变量d, e, f
分别代表三种表达式的情况:x=x-1, x=x--, x=--x
#include <stdio.h>
int main() {
int d=1,e=1,f=1;
printf("d=%d, e=%d, f=%d\n",d,e,f);
printf("d-1=%d\n",d-1);
printf("e--=%d\n",e--);
printf("--f=%d\n",--f);
return 0;
}
结果如下:
d=1, e=1, f=1
d-1=0
e--=1
--f=0
3.2 双元运算符
所谓双元运算符,即两个变量参与运算的符号,例如:+,-,*,/,%等
。但是我在这里就不去讲太简单的+,-,*
3.2.1 取整运算符/
这里的/
可能和大家常见的除号不太一样,举个例子,看代码!
#include <stdio.h>
int main() {
int a=5,b=2;
printf("5/2=%d\n",a/b);
printf("5/2=%lf\n",a/b);
double c=5.0,d=2;
printf("5.0/2=%lf\n",c/d);
double e=5,f=2.0;
printf("5/2.0=%lf\n",e/f);
return 0;
}
结果如下:
5/2=2
5/2=0.000000
5.0/2=2.500000
5/2.0=2.500000
Process finished with exit code 0
大家看出区别了嘛!
对于被除数与除数,如果两个都为整数,那么结果便是整数;
当然,如果其中任意一个为浮点数(小数),那么结果便为浮点数(小数)
3.3.2 取余运算符%
(模运算)
对于这个运算符号就很简单了,它只能用于两个整数间,结果为两个整数的余数,用法如下:
#include <stdio.h>
int main() {
int x=5,y=2;
printf("x%y=%d\n",x%y);
return 0;
}
结果如下:
xy=1
Process finished with exit code 0
3.3 优先级和结合性
大家思考一个事情,如果出现了好几个运算符,先算谁啊?
我本人就懒得整理了,大家可以参考这篇博客:C语言运算符优先级和结合性
[这篇博客出自:https://blog.csdn.net/alihouzi/article/details/50467690]
4. 格式控制符
还记得%lf, %d
嘛!没戳,他就是现在的主角!格式控制符!
大家可以理解为在不能使用变量的地方代替变量,或者说代替某种值。也就是上文在scanf()和printf()
的使用。
那我们什么时候应该用什么格式控制符呢?看下面的代码示例:
#include <stdio.h>
//在这里用%对格式控制符进行转义
int main() {
int a=523;
printf("%%d的使用:\n");
//默认用法一
printf("a=%d\n",a);
//默认用法二
printf("此时=%d\n\n",125);
float b=2.1256;
printf("%%f的使用:\n");
//默认用法一
printf("b=%f\n",b);
//默认用法二
printf("此时=%f\n\n",12.56);
double c=3.14159;
printf("%%lf的使用:\n");
//默认用法一
printf("c=%lf\n",c);
//默认用法二
printf("此时=%lf\n\n",23.66);
char d='$';
printf("%%c的使用:\n");
//默认用法一
printf("d=%c\n",d);
//默认用法二
printf("此时=%c\n\n",'f');
/* 进阶用法
* %[-][0][m/m.n] 格式控制符
* [-]表示在指定宽度后,左对齐(若未指定宽度,默认左对齐,若指定宽度,但是为设置此符号,默认右对齐)
* [0]表示在指定宽度后,若长度不够,用0补位(默认空格补位)
* [m.n]表示指定宽度为m,小数点后位数为n位
*/
//修改上文例子
printf("格式控制符的高级使用\n");
//采用%.2lf的格式输出c变量的值
printf("c=%.2lf\n",c);
return 0;
}
结果如下:
%d的使用:
a=523
此时=125
%f的使用:
b=2.125600
此时=12.560000
%lf的使用:
c=3.141590
此时=23.660000
%c的使用:
d=$
此时=f
格式控制符的高级使用
c=3.14
Process finished with exit code 0
5. 知识补充
我会对本部分知识进行不定期更新和补充,如果大家对这部分中的哪些知识没有明白,可以评论在评论区,我会在这个位置,对大家提出的疑问进行不定期的更新补充。
6. 结语
C语言中最最最基础部分暂时结束了,相信大家已经可以较为熟练地在屏幕上显示出自己想看到的东西啦,但是仅仅如此是不够的,接下来我将会聊到C语言的控制流,包括选择、循环以及函数部分。
学了这么多东西,大家可以尝试使用不同的运算符,会得到什么样子的结果呢~
好啦,还是老一句话,哈哈哈哈,如果以上说法有错误,希望大家可以在评论区及时订正,有问题也欢迎大家在评论区里提问,我会尽我所能帮助大家解决问题~