现代计算机之父: 冯.诺依曼
计算机语言分类:
机器语言
汇编语言
高级语言:B语言系
C语言系(C,C++,C#,java,Perl,Python)
C语言及标准化
最早由Dennis Ritchie于1973年为unix设计并实现,从贝尔实验室到世界各地
标准:
C89 ANSI(美国国家标准委员会)于89年12月正式通过,90年被ISO批准为国家标准
C99 99年ISO通过了新版的C标准。
C语言特点
1.底层语言
2.小型语言:有限的语言特征、依赖标准函数库
3.包容性:广泛的自由度,不强制进行详细的错误检查
4.C语言不是一个强类型语言,类型检查机制已经得到加强
C语言优缺点:
优点:高效、可移植、功能强大、灵魂(从嵌入式到商业数据处理、限制少)、标准库、与UNIX系统集成。
缺点:容易隐藏错误、有时难以理解、难以修改
gcc选项
-c 编译
-o自定义目标名
-std=c89或c99
-E仅仅预处理
-S产生汇编
-Wall编译器检测到可能的错误时生成警告信息
例如:
gcc 01helloworld.o//编译源代码
gcc 0lhelloworld.o –ohelloworld//-o起别名
ls –F//查看文件属性
注释
/**/ 多行注释
// c99提供的新注释形式,单行注释
不能嵌套注释
C语言书写规范
语句,可以分开放在任意多行内;
空格是我们任意区分
缩进,有助于识别程序嵌套
空行,可以把程序分为逻辑单元
驼峰命令方式和下划线区分方式
变量
变量---类型---声明---赋值
标示符和关键字
标示符:变量、函数、宏、其他实体的名称需要:
字母、下划线开头
可以包含字母、下划线、数字
大小写敏感
不能和关键字冲突
标示符长度的限制:
C89声明可以任意长,但编译器只记住前31个
C99中63个
关键字:
有特殊含义的一串字符
标准库中的函数名全部小写
C语言中的基本类型
Char 8位 16
C标准没有说明普通char是有符号还是无符号
C语言对字符类型视为整数类型
int:
有符号:signed,默认(正负),范围2147483647- -2147483648
无符号的:非负数,范围0-4294967296
float
double
转义字符
响铃 \a
退格 \b
换行 \n
回车 \r
水平制表符 \t
垂直制表符 \v
特殊字符:\\,\?,\’,\”
Printf()输出各种类型的变量值
Printf(“格式字符串”,…);
%i%d int
%f/%lf float/double
%hd/%ld short int/long int
%u unsigned int
%c char
%s string
%p address(指针)
%o 八进制
%x/%x 十六进制
%g float/double 去尾零
%e/%E 科学计数法
%% %
Printf(“%-0m.nl”,…);:
% 转义符
- 左对齐
0代表空位填0,省略代表空位不填
m.n: m表示域宽,指对应的输出项在输出设备占用多个字符的宽度
n,表示精度,指输出浮点数的时候,小数点后面的位数,默认为6
l或者h,l表示长double型,h表示短double型
字面值和常量
3被认为是int
3.5被认为是double
35u被认为是unsignedint
35L被认为是long int
八进制和十六进制
0377
0x12AB
进制-的转换
10进制---2进制,除2取余倒记法
10进制---8进制,除8取余倒记法
权位
2进制—10进制,乘权相加法
10110101,=1*2^0+1*2^2+2^4+…..
0167,, =7*8^0+6*8+8^2=119
Scanf(“格式符”,地址表) 从键盘输入
格式符
d十进制
i整数型,可以是10,8,16进制
o八进制
u无符号10进制
x十六进制
c字符
s非空白符组成的字符串
e,f,g浮点数
p地址
段错误:程序段、数据段、bss段、堆栈
访问非法地址
注意:转换说明和后面地址相匹配
输入项前面的&不要省略
scanf遇到不可能属于该项的字符的时候,会把这个字符放回到原处,下一次调用的时候再度入。
scanf(“%*c”)//fflush(stdin):清楚回车,多个scanf()出现的时候
Scanf不会读取最后的换行符
解决办法:scanf(“%*c”);//可以将回车从缓存区读取出来。
如果格式串中包含普通字符
例如:scanf(“num=%d&”,&num);
则输入时应按照普通字符的格式输入:num=3000;
scanf可以作为返回值num=scanf(“”);可以用于判断数据是否输入正确