1、注释:
(1) // 在其后面写注释内容,只限本行
(2) /* */ 在其中间写注释内容,可以跨多行(C语言的写法)
2、函数调用时,是将实参复制给形参,而实参本身并不改变。
3、函数头有返回类型说明时,函数结束时要使用return返回。如果不需要返回,就在函数头声明为void,函数结束时也无需要return。
4、c程序经过编辑、编译、连接,最终形成exe文件。
5、变量代表其存储空间名。
6、数据类型分为:基本类型和非基本类型。
基本类型包括:整形 int 、字符型 char 、实型(单精度型 float、双精度型 double)、逻辑型 bool;
非基本类型包括:数组 [ ] 、指针 * 、空类型 void 、结构 struct 、联合 uoion 、类 class 、枚举 enum。
类型前面可以加上修饰符:long(长型)、short(短型)、unsigned(无符号型,即正数型)、signed(有符号型,即正负数型)
类型 | 说明 | 字节长度 | 表示范围 |
char | 字符型 | 1 | -128~127 |
signed char | 有符号字符型 | 1 | -128~127 |
unsigned char | 无符号字符型 | 1 | 0~255 |
int | 整型 | 2 | -32768~32767 |
signed int | 有符号整型 | 2 | -32768~32767 |
unsigned int | 无符号整型 | 2 | 0~65536 |
short (int) | 短整型 | 2 | -32768~32767 |
signed short (int) | 有符号短整型 | 2 | -32768~32767 |
unsigned short (int) | 无符号短整型 | 2 | 0~65536 |
long (int) | 长整型 | 4 | -2147483648~2147483647 |
signed long (int) | 有符号长整型 | 4 | -2147483648~2147483647 |
unsigned ling (int) | 无符号长整型 | 4 | 0~4294967296 |
float | 浮点型(单精度) | 4 | 7位有效位 |
double | 双精度型 | 8 | 15位有效位 |
long double | 长双精度型 | 10 | 19位有效位 |
所占字节:char为1字节,int为2字节,只有long int 和 float 为4字节;double 为8字节,long double为10字节。
7、变量命名写法:
(1)骆驼表示法,即两个单词构成时,第一个单词小写,后一个单词首字母大写,像驼峰一样,如myCar。
(2)匈牙利表示法,在每个变量前加上若干表示类型的字符。如iMyCar表示整型变量,ipMyCar表示整型指针。
8、声明新类型 typedef
格式为: typedef 原类型名 新名
如 typedef double dbl;
dbl a;
意思为:将double类型说明为dbl,然后定义一个double类型变量a。
9、整型常量表示时,
(1) 8进制以0开头,如0123表示8进制的123,等于10进制的83;
(2) 16进制表示时,以0X或0x开头,如0X123或0x123表示16进制的123,等于10进制的291。
(3) 长整型表示时,在后面加上L或l,如123L或123l表示是长整型(long int)。
10、在C++中,一个实型常数如没有任何说明,默认为double型。
如果要表示为float型,则要在其后加上F或f;
如果要表示为long double型,则要在后面加上L或l。
34.5 //double型
34.5F //float型
34.5e23L //long double型
11、字符常量。将一个字符常量赋值给字符变量,实际上是把该字符相应的ASCII(整型数)存入内存单元,而不是把该字符存入内存单元。
如 char b = 'a' ; //将a的ASCII码97存入字符变量b所在单元
因此,C++中字符数据和整型数据可以相互赋值。如
int a = ' b ' ; //将字符b的ASCII码98赋值给a,使a的值为98
char c = 97 ; //将97对应的ASCII字符a赋给c,使c的值为a
12、字符串常量(双引号,以' /0' 结束)
字符常量 | 字符串常量 | 备注 |
用单引号括起来 | 用双引号括起来 | ' a '是字符常量," a "是字符串常量 |
只是所见字符 | 在所见字符外,以' /0 ' 结束 | ' a ' 在内存中只有a,占一个单元;" a "在内存中为 a ' /0 ' ,占两个单元 |
在内存中只占1个单元 | 在内存中为连续单元 | |
在输出时二者无区别 | 如'a' 和 "a" 输出结果都是a,而且输出格式也相同 |
13、常量定义(const)
如果想让一个变量(函数、对象等)内容不变,或防止别人改动,则可以把其定义为const,表示方法为:在其前面加上const。
(1)定义成const后的常量,程序中只能读而不能改;
(2)由于不可改,所以常量定义时必须初始化;
(3)常量名不能作为左值。
(4)在C++中尽量使用const,而不使用#define。
例:const int a ;
a = 100;
错误,常量在定义时必须立即初始化。
14、表达式与语句
(1)表达式加上分号后构成语句;
(2)表达式由操作符、操作数和标点符号3部分组成;
(3)空语句只由1个分号;
15、操作符优先级与结合性(暂空)
16、左值与右值
在表达式中,出现在赋值表达式左边的值为左值,左值可以存放变量,也可以改变其值;
const因为不能改变其值,所以不能做左值,只可以做右值。
17、在运算过程中,最好先定义运算数类型,或强制转换类型后,再运算,以防止被系统自动隐含转换导致结果与预期不同。
如:
(1) 5/2 //未定义或转换,即把5和2都当作整数,结果也为整数,结果为2
(2) 5.0/2 //隐含定义,即把5.0看作double,同样把2隐含转换为double,结果也为double,结果为2.5
(3) 5/2.0 //同上
(4) (float)5/2 //强制类型转换,即把5转换为float,同样把2隐含转换为float,结果也为float,结果为2.5
(5) float(5/2) //虽使用强制类型转换,但5/2在先,相除结果为2,然后再对2强制转换为float型,依然是2
(6) float a=5;
a/2 //显式声明a为float,则在a/2中2也被隐含转换为float型,则结果为float型,结果为2.5
18、如操作数超出其数据类型表示范围时,会发生溢出,引起计算结果错误。在一般情况下,溢出后的结果为正常结果的补码。
如: int we = 42896;
在16位机器上将不能得到值42896,只有int有表示范围为-32768~32767,所以只能拿42896减去65536,得到的结果为42896的补码,即-22640
19、算术类型转换(总量向表达能力强的方向转换,即由短向长转换)
char → int ↘
double → long double
float ↗
20、增量与减量
++a : 先将a+1,然后将变化后的值作为a的值;
a++ : 先将a的值确定下来,然后再将a+1。
如:
int a=3;
int b=++a;
cout<<a<<b; //结果为44
int a=3;
int b=a++;
cout<<a<<b; //结果为43
21、条件运算符 ? :
(条件表达式) ? (条件为真时的表达式) : (条件为假时的表达式)
如,(a) ? b : c 如a为真,则表达式的结果为b,否则为c。
22、逗号运算符
最右边的值是逗号表达式的结果。
如:d = ( a = 1 , b = a + 1 , c = b + 3 ) 则d的值为6,即d等于最右边的值(b+3)。
23、在关系运算中,= 与 == 经常会搞错,导致结果相去甚远。
*24、枚举常量
(1)枚举常量定义(默认初始化):
enum 枚举类型名 {常量1 , 常量2 , ……常量n};
在定义时隐含初始化,常量1的值默认等于0,常量2的值默认为1,常量n的值默认等于n-1。
(2) 枚举常量定义(显式初始化):
enum 枚举类型名 {常量1=10 , 常量2 , 常量3=15 , 常量4=80 , 常量5=99,常量6, …… 常量n}
按照常量值自动加1的规则,则常量2等于11,常量6等于100。
(3) 定义枚举常量后,可以定义其变量,其变量只能取枚举类型定义时的常量值。
例:
enum color {red = 3 , yellow =5 , blue=9}; //定义枚举类型并显式赋值
enum color a, b, c; //生成3个color类型的枚举变量,这里的enum可以省略
color d=blue; //生成1个枚举型变量d并将blue赋值给它
b=blue; //将blue赋值给b,因前面已定义,故此处不需要加color
c=9; //错误,只能将枚举类型定义的值赋给枚举变量,而不能赋给其数