编译和链接
C语言是一门编译型计算机语言,源代码都是文本文件,本身无法执行,必须通过编译器的编译和链接器的链接生成二进制的可执行文件才能执行。
一个工程一般多个源文件组成。
1.每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)。
2.多个目标文件和库文件经过链接器生成对应的可执行程序。
关键字
C语言中一批保留名字的符号,如:int,if,return
注意:关键字不能自己创建。
32个关键字:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof
static struct switch typedef union unsigned void volatile while
字符和ASCII编码
a,q,@等符号被称为字符,C语言中用单引号括起来:‘a’ ,‘b’ ,‘@’。
为了让字符在内存中以二进制形式存储,美国国家标准学会给每个字符编了一个二进制序列(叫做编码),出台了一个标准ASCII编码。(C语言中遵循)。ASCII码表。
- 字符A-Z为65-90
- 字符a-z为97-122
- 对应大小写(a-A)差值为32
- 数字字符0-9的ASCII码值为48-57
- \n为10
- ASCII码值0-31这32个字符是不可打印字符,无法打印在屏幕上观察。
#include <stdio.h>
int main();
{int i=0;
for`(i=32;i<=127;i++)
{printf("%c ",i);
if(i%16==15)
printf("\n");}
return 0;}
字符串和\0
字符串:用双引号括起来的一串字符 如”abcd".打印格式用%s来指定。
末尾隐藏着一个\0字符,是字符串的结束标志。
#include <stdio.h>
int main()
{
char a1[]={'a','b','c'};
char a2[]="abc";
printf("%s\n",a1);
printf("%s\n",a2);
return 0;
}
因为a1在末尾的地方没有\0作为结束标志,以上代码a1输出时打印了一些随机值。
转义字符
转变原来意思的字符。
? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• ’ :⽤于表⽰字符常量’
• " :⽤于表⽰⼀个字符串内部的双引号
• \ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
• \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
• \t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。
下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式
• \ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X
• \xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其ASCII码值是0.
getchar和putchar
getchar()函数返回用户从键盘输入的一个字符。程序运行到这个命令时会暂停,等待用户从键盘输入。定义在头文件<stdio.h>
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int ch;
ch=getchar();
cout<<ch<<endl;
cout<<(char)ch<<endl;
return 0;
getchar()不会忽略空白字符,总是返回当前读取的第一个字符,无论是否为空格。
若读取失败,返回常量EOF,EOF的值通常是-1,所以返回值要设为int,而不是char.
putchar()函数将它的参数字符输出到屏幕。
int putchar(int character);
#include <cstdio>
int main()
{
int ch=0;
ch=getchar();
putchar(ch);
return 0;
}
printf
输出文本中可以含有多个占位符。%d,%f 等为占位符。
#include <cstdio>
int main()
{
printf("%5d\n",123);
return 0;}
以上代码中,%d表示这个占位符的宽度至少为5位,如果不满5位,对应的值的前面会添加空格。输出的值默认是右对齐。若希望改成左对齐(在输出内容后面添加空格),可以在占位符的%的后面插入一个-号。
对于小数,这个限定符会限制所以数字的最小显示宽度。
#include <cstdio>
int main()
{
printf("%12f\n",123.45);
return 0;
}
上述示例中,%12f表示输出的浮点数至少要占据12位,而小数的默认显示精度是小数点后6位,所以123.45输出结果的头部会添加2个空格。
限定小数位数
若希望小数点后面只保留两位,占位符就%.2f。
%6.2f表示输出字符串最小宽度为6,小数位数为2.则输出的字符串的头部有两个空格。