c++小笔记

一、整形大小

1)short  :至少为16位,16位可表示65536(十进制5位)个不同的值

2)int  :至少与short一样长,int  一般与机器字长相等,如果是32位则可表示4294672296(十进制10位)个不同的值

3)long  :至少为32位,至少与int  一样长

4)long long  :至少64位,64位可表示18446744073709551616(十进制20位)个不同的值

二、关键字final

顾名思义,final 就是最终的、不改了、就这样子的意思

1)final 放在类前面
  如果某个类在定义时,前面有修饰词final,则该类不能被继承
2)final 放在属性前面
  属性声明时,如果前面有修饰词final关键字,则该属性值不能被更改,即此时该属性为常量
3)final放在方法前面
  如果某个方法在定义时,前面有修饰词final,该方法可以被调用,不能重写
 

三、cosnt char *pCh; //意思是不能改变 pCh 所指向的值,但是可以改变pCh,也就是可以指向另一个值。

四、数的转换规则

当执行算术运算时,当操作数的类型不同就会发生转换。转换一般朝着浮点数精度更高长度更长的方向转换,整形数如果转换为 signed 不会丢失信息就转换为 signed ,否则转换为 unsigned (即使丢失信息)。

所以:

1,long double   >    double   >   float   >   整形转换

2,整形转换,注意:unsigned int 不能与int做比较!!!切记!

当然存在以下小小Bug:

#include "iostream"
using namespace std;

int a[5];
#define TT (sizeof(a))

int main()
{
	if(-1 <= TT)
		cout<<"没有错啊!"<<endl;
	else
		cout<<"太离谱了!!!"<<endl;
	int av;
	cin>>av;
	
	return 0;
}

输出为:太离谱了!!!

五、一些关键词

break:中断最近一层循环或 switch

static:1、在函数内部,表示该变量的值在各个调用间一直保持延续性

2、在函数这一级,表示该函数只对文件内部可见

extern:1、用于函数定义,表示全局可见(属于冗余的)

2、用于变量,表示它在其他地方定义


六、浮点数不能直接用 == 或 != 进行比较。会出错

以下代码不可行:会输出a=。。。。

#include"iostream"
using namespace std;

int main()
{
        float a,b;
        a = 12.98;
        b = 0.98;
        if(a-12 == b)
                cout<<"everything thing is ok!"<<endl;
        else
                cout<<"a="<<a<<";a-12="<<a-12<<";b="<<b<<endl;

        return 0;
}


以下代码可行:会输出 everything is ok

#include"iostream"
using namespace std;
#define EQUEL 0.000001
int main()
{
        float a,b;
        a = 12.98;
        b = 0.98;
        if(a-12 - b < EQUEL && a-12-b >-EQUE < EQUEL && a-12-b >-EQUEL)
                cout<<"everything is ok!"<<endl;
        else
                cout<<"a="<<a<<";a-12="<<a-12<<";b="<<b<<endl;

        return 0;
}


小知识:

常量的默认类型:编译器一般默认整形常量的保存类型为int 型如cout<<"year = "<<2013<<endl;这里的2013就被默认保存为int 型,如果想改变其保存类型,可通过增加后缀的方法,如2013u表示unsigned int 类型,2013L表示long类型,2013LL表示long long 类型。


七、不要在函数传参时使用 i++ 或 i-- 之类的

int main(itn arg,char *argv[])
{
        f(1);
}

f(int i)
{
        if(i == 9)
             cout<<"done"<<endl;
        else 
             f(i++);  // 错误!传过去的参数是i,而不是 i+1 ,会在此处陷入递归无穷嵌套!
}


八、c++ 用getline 函数读取,输入缓冲区里的一行,遇到回车截止

#include<iostream>
using namespace std;
int main()
{
    int t;cin>>t;
    string a;
    getline(cin,a);//读取输入的t,防止混乱
    for(int i = 0;i<t;i++)
    {
        getline(cin,a);
        cout<<"输入的字符串是:"<<a<<"\t输入字符串长度为"<<a.size()<<endl;
    }

    return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值