1. C关键字
auto | int | double | long | char | float | short | signed |
unsigned | struct | union | enum | static | switch | case | default |
break | register | const | volatile | typedef | extern | return | void |
continue | do | while | if | else | for | goto | sizeof |
2. C++关键字
auto | break | case | char | const |
continue | default | do | double | else |
enum | extern | float | for | goto |
if | int | long | register | return |
short | signed | siezeof | static | struct |
switch | typedef | unsigned | union | void |
volatile | while | bool | catch | class |
说明:C++中新增数据类型bool,class是面向对象中类的声明符,catch与异常处理有关。
2. C语言数据类型:
- 基本数据类型只有5种:char、int、float、double、void
- 但是可以用修饰符:signed、unsigned、short、long按一定规则组合
- signed、unsigned可以修饰:char、int
- short、long可以修饰:int
- long可以修饰float:此时long float 即为double类型
- signed、unsigned可以与short、long修饰的int型搭配
- 自定义数据类型:
- 数组(类型[])
- 指针(类型*)
- 构造数据类型:
- 结构体型struct
- 联合体型union
- 枚举类型enum
3. C++数据类型
4. 关于C++程序的说明
-
关于C++程序本身:
- 每个C++程序都由很多个“函数”组成;
- 每个程序都以main( )函数开始(程序入口);
- 每个函数的形式都有“输入”和“输出”;
-
语句分号结尾,一行可以写多个语句,一个语句
可以写多行;格式变化不会影响程序运行; - 程序中的注释可以放在/*….*/之间,或 // 之后;
- 每个C++程序都由很多个“函数”组成;
- 关于C++程序的运行环境
- C++程序均保存在 xxx.cpp 的文件之中;
- 不同的文件之间可以互相“引用”;
- 通过“ include”实现;
-
xxx.cpp 文件不能直接执行,通过编译器进行编译、连接,形成可执行文件才能执行;
- C++程序的加工和执行
-
源程序,不能直接执行,必须先把它转换
为可执行程序。 -
加工通常分两步:编译、连接
-
- 关于C++程序的书写
- 每行程序的书写必须按照逻辑进行缩进;
- 编写如下程序行时,应该提供注释:
- 变量的定义; //说明变量代表的意义或作用;
- 函数的定义; //说明该函数的主要作用;
- 复杂逻辑出现时; //解释一段语句的作用;
- 变量的命名应该尽可能体现变量的含义;
5. 程序释义:计算任务的处理对象和处理规则的描述。
- 计算任务:任何以计算机为处理工具的任务都是计算任务。
- 处理对象是数据(如数字、文字、图形、图像、声音等,它们只是表示,而无含义)或信息(数据及有关的含义)。
- 处理规则一般指处理动作和步骤。
6. 程序设计语言的分类
- 机器语言
- 汇编语言
- 高级语言
7. 学习内容
8. C语言历史
- Algol 60: 1960年1月,图灵奖获得者Alan J.Perlis在巴黎举行的由全世界一流软件专家参加的讨论会上,发表了“算法语言Algol60报告”,确定了程序设计语言Algol 60。( A 语言)
- 1963年,剑桥大学在ALGOL 60的基础上推出了CPL( Combined Programming Language)语言,但规模比较大,难以实现。 1967年,剑桥大学的Matin Richards对CPL语言作了简化,推出了BCPL( Basic Combined Programming Language)语言。 1970年贝尔实验室的Ken Thompson进一步简化,设计出了B语言,并用B语言写第一个UNIX操作系统,在PDP-7上实现。
- C语言是在1972-1973年间由UNIX的研制者Dennis Ritchie和Ken Thompson在B语言的基础上发展和完善起来的。
9. C语言版本
- K&R C
- 在1978年, Kernighan和Ritchie的《 The C Programming Language》 第一版出版。在以后的几年里, 《 The C Programming Language》 一直被广泛作为C语言事实上的规范。在这本书中, C语言通常被表述成“ K&R C”。
- ANSI C和ISO C( 1989年)
- 1989年, C语言被ANSI标准化,对 K&R C进行了扩展,包括了一些新的特性,也规定了一套标准函数库。
- ISO成立 ISO/IEC JTC1/SC22/WG14工作组来规定国际标准的C语言。
- 通过对ANSI标准的少量修改,最终通过了ISO 9899:1990。随后ISO标准被ANSI采纳。
- ANSI C和ISO C( 1995年)
- 作为对标准的维护与更新, WG14工作小组在1995年对1985年颁布的标准做了两处技术修订(缺陷修复)和一个补充(扩展)。
- C99
- 在ANSI标准化后, WG14小组继续致力于改进C语言。新的标准很快推出,就是ISO9899:1999( 1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年三月采用。
10. 从C到C++
- 美国AT&T贝尔实验室的本贾尼( Bjarne Stroustrup)在20世纪80年代初期发明并实现了C++(最初被称作“ C with Classes”)。
- 1985年10月, Bjarne博士完成了经典巨著The C++ Programming Language第一版 ;
- 1998年11月ISO颁布了C++程序设计语言的国际标准ISO/IEC 14882-1998。
- 2003年发布一个C++标准的修正版本;每5年视实际需要更新一次标准。
11. 执行一个C++程序
12. 命令行参数
用户通过命令行界面执行某个程序时输入的参数;C++ 程序通过入口函数 main() 来接收命令行参数。
一个简单的例子:
#include <iostream> #include <string> using namespace std; int main(int argc, char **argv) { // or char* []argv for (int i = 0; i < argc; ++i) { cout << string(argv[i]) << endl; } return 0; }
- 参数 argc 表示启动程序时,传入的命令行参数的个数
- 参数 argv 是一个数组,其每个元素都是一个 char* 类型的指针
- 每个指针都指向一个字符串,这个字符串里就存放着对应的命令行参数
- argv[i] 指向的字符串中就存放着第 i 个命令行参数的值
- 命令行参数的第一个值永远是可执行程序自身的名字
- argc 的值至少是 1
- argv[0] 指向的字符串就是这个可执行程序的名字
13. 数制转换
把十进制数转换为二进制数的方法是:
整数转换用“ 除2取余法”:
小数转换用“乘2取整法”:
14. 程序设计语言的构成
语言的种类千差万别,但是,一般说来,基本成分不外四种:
- 数据成分,用以描述程序中所涉及的数据;
- 运算成分,用以描述程序中所包含的运算;
- 控制成分,用以表达程序中的控制构造;
- 传输成分,用以表达程序中数据的传输;
15. 整型数据的范围:
一个例子:(在mac air x86_64系统演示)
#include <iostream> int main(){ std::cout<<std::endl; std::cout<<"sizeof short [int]: "<<sizeof(short int)<<std::endl; std::cout<<"sizeof signed short [int]: "<<sizeof(signed short int)<<std::endl; std::cout<<"sizeof unsigned short [int]: "<<sizeof(unsigned short int)<<std::endl; std::cout<<std::endl; std::cout<<"sizeof int: "<<sizeof(int)<<std::endl; std::cout<<"sizeof signed int: "<<sizeof(signed int)<<std::endl; std::cout<<"sizeof unsigned int: "<<sizeof(unsigned int)<<std::endl; std::cout<<std::endl; std::cout<<"sizeof long [int]: "<<sizeof(long int)<<std::endl; std::cout<<"sizeof signed long [int]: "<<sizeof(signed long int)<<std::endl; std::cout<<"sizeof unsigned long [int]: "<<sizeof(unsigned long int)<<std::endl; std::cout<<std::endl;
return 0; }
结果如下:
16. 以不同方式输出整数
#include <iostream> using namespace std; int main(){ int x = 10, y = 20, z = 30; cout<<"To display in decimal: "; cout<<"x = "<<x<<", y = "<<y<<", z = "<<z<<endl; cout<<"To display in hex: "; cout<<hex<<"x = "<<x<<", y = "<<y<<", z = "<<z<<endl; cout<<"To display in oct: "; cout<<oct<<"x = "<<x<<", y = "<<y<<", z = "<<z<<endl;
return 0; }
结果:
17. 变量未初始化
#include <iostream> using namespace std; int main(){ int a; for(auto i = 0; i < 10 ; i++)cout<<a<<endl; return 0; }
结果: