C语言的前置细碎知识

📅 2026/7/6 3:02:37 👁️ 阅读次数 📝 编程学习
C语言的前置细碎知识

C语言前置细碎知识

  • C语言常见概念
    • main函数
    • 字符和ASCII
    • 字符串和\0
    • 转义字符
  • 数据类型和变量
    • 数据类型
    • 变量
    • 算术操作符
      • +,-,*
      • /
      • %
    • 赋值操作符
    • 单目操作符
    • 强制类型转换
    • scanf和printf介绍
      • ==printf==
      • 常见占位符
      • 输出格式
        • 限制长度
      • 控制小数点位数
      • 显示正负号
      • 输出部分字符串
      • ==scanf==

C语言常见概念

好久没有看C语言,决定这个暑假在学新的内容先将前面的复习一下,并补缺之前没有这里的笔记。同时这也是第一次使用Markdown进行写文章,有点不熟练,多多包涵!

main函数

main函数是程序的一个入口,也可以叫做主函数;前面的int代表返回整形的类型值,与return 0相呼应;main函数有且仅有一个

字符和ASCII

字符是指键盘敲的任意键,每个键都是一个字符。它是由单引号括起来的。每一个字符都有一个ASCII值,以方便字符存储在内存之中。

ASCII需要着重知道的是常见的ASCII值:
A~Z->65~90
a~z->97~122
0~9->0~9
\n->10

可以发现大写字母和小写字母相差32,同时0-31是不可打印字符。

字符串和\0

字符串是指有一系列字符组成的一串字符,用双引号括起来。当然字符串也可以是一个字符组成的的字符串。字符和字符串主要的区别是二者是被单引号还是双引号所包括。
\0是一个转义字符,是隐藏在字符串末尾的一个字符,它是字符串的结束的标志。

转义字符

转义字符作用
\r让光标回到开头
?表示问号,防止在书写多个问号时,被解析成三字母词
\n换行操作
表示单引号
"表示双引号
\表示一个反斜杠\
\b退格键,光标退回一个字符,但不删除这个字符
\t移动到下一个制表符,制表符一般是4/8的倍数
\ddd表示一到三位的8进制数字
\xdd表示两个16进制的数字
\0字符串结束的标志
%%表示一个百分号

数据类型和变量

数据类型

变量

变量的创建=数据类型+变量名(变量名是由字母、数字、下划线组成的,同时数字不能作为开头)。
变量的类别:分为全局变量和局部变量。遵循局部变量优先原则。

创建变量名的要求:

  • 变量区分大小写。
  • 变量不能是关键字。
  • 变量名尽量有意义

算术操作符

+,-,*

和我们平常数学使用的一样。

/

这个稍有点不一样,如果除号左右两边的操作数均是整数的话,最后的结果就是整数(相当于取整函数的意思);如果左右操作数至少有一个是浮点型,那么最后的结果就是浮点型。

%

取模运算,要求左右操作数必须是整数,运算就是取余。当左右操作数中有负数时,余数的正负要看看左操作数,左操作数是正,那么余数就是正;左操作数是负,那么余数就是负。

赋值操作符

操作符即为=,就是把右边的值赋给左边的值。

  • int a =10;//初始化 a=20;//赋值
  • 连续赋值a=b=c+3;//前提是已经初始化好a,b,c
  • 复合赋值a+=3;//等价于 a=a+3;

单目操作符

前置运算和后置运算。前置运算是指:++a/- -a,规则是先计算,后赋值。
后置运算是指:a++/a- -先赋值,后计算。

inta=10;intb=0;intc=0;b=a++;printf("%d\n",a);//11printf("%d\n",b);//10c=++a;printf("%d\n",a);//12printf("%d\n",c);//12

强制类型转换

格式:(要强转为的数据类型)变量;

inta=10;floatb=3.2;a=(int)a+b;//这里a+b是浮点型,但是要赋值的a是整型,需要将浮点型强转为整型

scanf和printf介绍

printf

inta=0;printf("%d\n;a");

常见占位符

占位符表示
%d十进制整数
%u十进制无符号int类型
%ld十进制 long int 类型
%hd十进制short 类型
%lu十进制无符号long int 类型
%lld十进制 long long int 类型
%o八进制整数
%x16进制整数
%c代表字符
%s字符串
%f表示单精度浮点型
%lf表示双精度浮点型
%Lf表示 long double 类型
%p代表地址
%zu代表size_t 类型

输出格式

限制长度

限制的是最少长度。

inta=123456;intb=123456;intc=1234;printf("%d\n",a);//123456printf("%5d\n",b);//123456printf("%5d\n",c);//_1234printf("%-5d\n",c);//1234_
  • 当要输出的数字长度大于要求的限制长度,那么就要原样输出。
  • 当要输出的数字长度小于要求的限制长度,那么就要补空格。这就分左对齐还是右对齐了。%-5d要求左对齐,%5d要求右对齐。代码中最后两行的结果真实中并不代下划线,只是为了清晰表达是补的空格而使用的这种方法。

控制小数点位数

inta=4.5678;printf("%f\n",a);//4.567800printf("%.2f\n",a);//4.56printf("%3.2f\n",a);//4.56
  • 小数字点后面小数字可以用来限制小数点的位数,同时也可以结合限定宽度来使用。

显示正负号

inta=10printf("%+d\n",a);//+10printf("%-d\n",a);//-10
  • 可以通过在百分号的后面加上正负号来表示这个数的正负。

输出部分字符串

printf("%.5s\n",abcd);//_abcd
  • %.[m]s其中[m]为一个数字,即限定的宽度。

scanf

inta=0;scanf("%d",&a);
  • 与printf较为类似均分为两个参数。左边为占位符,右边是要输的值。不同的是printf是将值输出到屏幕上,而scanf是将值输入到计算机内存里,同时第二个参数是必须要加取地址符号&。
  • 返回值是成功读取的次数。若在读取之前,发生读取错误或者是读到文件末尾就会返回EOF(-1)。
  • scanf 除了%c 会自动忽略空白字符。
  • 说一个我新见到的占位符%[ ]在方括号内指定一组字符串,不匹配就会停止。
  • scanf 是不会检测字符串是否超出了数组长度。所以通过加上限定,来控制数组防止溢出。
charname[10];scanf("%10s",name);
  • 赋值忽略符。用户可能会输入不符合规定的字符。例如下方代码,如果输入的是2026-7-5,那么会被正确解析,如果输入的是2026/7/5,那么就不会被正确解析,就会停止。因此提供了赋值忽略符*,来防止出现这种错误。只需要将*放在占位符百分号后面就可以了。
intyear=0;intmonth=0;intday=0;scanf("%d-%d-%d",&year,&momth,&day);scanf("%d%*c%d%*c%d",&year,&momth,&day);//加了赋值忽略符
  • 要想结束scanf,可以按三次ctrl+z来结束scanf。