一、基本数据类型
int,long,short,char的最高位(最左边)是符号位,为1则表示负数,为0表示非负数
一个字节等于8位(bit),即8个二进制位。
sizeof(变量名)
sizeof(类型名)
二、强制类型转换
c中:int i=10;double x=(double)i;
c++:double x=double(i);
c++两种方式都接受,但是推荐后一种。
三、尽量使用double
double的精度高于float,所以一般尽量使用double!
double 类型的变量用%lf输入。
四、关于输入输出
用cin,cout和scanf,printf
cin,cout 速度比scanf,printf慢,输入输出数据量大时用后者
一个程序里面不要同时使用cin和scanf,不要同时使用cout 和printf
五、算数表达式
1.a+=b;等效于a=a+b,但是前者执行速度更快
同理,++,--,也比i=i+1要快
2,a和b做算数运算,表达式的值以操作数中精度高的类型为准
char和short值都提升为int型,float 都提升为double,完成这种转换之后,其他转换将随操作进行。
两个整数类型进行加减乘都可能导致计算结果超出了结果类型所能表示的范围,这种情况叫溢出。计算结果的溢出部分直接被丢弃。实数(浮点数)运算也可能溢出,结果不易预测。
有时计算的最终结果似乎不会溢出,但中间结果可能溢出,这也会导致程序出错。
解决溢出的办法是尽量使用更高精度的数据类型。int--->long long
除法运算和模运算的除数都不能为0,否则程序会崩溃!
例如:double a,b,c,s;计算s=(a+b+c)/2时,不可以使用s=1/2*(a+b+c),可以使用s=0.5*(a+b+c),s=(a+b+c)/2.0;
3,逻辑表达式是短路计算的,即对整个表达式的计算,在整个表达式的值已经能够断定的时候即会停止。如:n=a++||b++;b++不被计算
六,强制类型转换运算符
c++中类型名本身就是一个运算符,叫“强制类型转换运算符”,用于将操作数转换为指定类型,但是这种不总是如愿。
七、
八、数组
。。。
1,筛选法求素数
2,数组取代复杂的分支结构
九、字符串的形式
1,用双引号括起来的字符串常量,如“sdhfd”
2,存放于字符数组中,以'\0'字符(ASC||码为0)结尾
3,string对象。string是C++标准模板库的一个类,专门用于处理字符串
(c++支持三种方式,C支持前两种)
字符串常量占据内存的字节数等于字符串中字符数目+1,多出来结尾字符‘\0’,
十、一维char数组存放字符串
十一、字符数组的三种输入输出方式
1.字符数组名本身代表该数组存放的字符串的首地址,所以使用scanf时,不使用&
2.scanf会自动添加结尾的\0
3.scanf读入到空格,回车,换行,制表,文件结束符(EOF)等空白符为止。
4,在数组长度不足的情况下,可能导致越界
(3)使用gets()或puts()
scanf()会自动错过“ ”里有的字符不读入,比如,scanf("%d,%d",&a,&b);从键盘输入3,4时,没有读入",",另外当输入char类型时,可以用scanf(" %c",&s),即在前面加一个空格,防止读入空格。
十二、
可以使用一个变量int len=strlen(s);for(i=0;i<len;i++)
十三、指针
等价于
1.两个同类型的指针变量可以比较大小
(4)指针变量可以自增自减
(6)作为函数形参时,T *p和T p[]等价
十四:指针和二维数组: