C语言教程(四):基础知识(最后一续)

参考:

  • 《标准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语言的控制流,包括选择、循环以及函数部分。
学了这么多东西,大家可以尝试使用不同的运算符,会得到什么样子的结果呢~
好啦,还是老一句话,哈哈哈哈,如果以上说法有错误,希望大家可以在评论区及时订正,有问题也欢迎大家在评论区里提问,我会尽我所能帮助大家解决问题~

发布了16 篇原创文章 · 获赞 11 · 访问量 1145

猜你喜欢

转载自blog.csdn.net/bjtu_linxinyu/article/details/103993295