新手学习C++记录(为了督促自己学习)【2】

mac2024-10-18  2

C++ 【2】

(1)简单变量

1.变量名:注意:第一个字符不能是数字;只能数字字母下划线;不能用关键词 最好使用驼峰命名法;第一个字符最好不是下划线; 2.整型: short(16位)、int、long(32位)、long long(64位)—最小长度

INT_MAX:为int的最大取值;用之前要预处理:#include<climits> CHAR_BIT:为字节位数;

sizeof:字节长度 用法:

sizeof(类型名)如sizeof(int);sizeof 变量名 如 sizeof a;

无符号类型:unsigned int change; unsigned short aaa;其中unsigned 本身就是unsigned int

//演示程序 #include<iostream> #define ZERO 0 #include<climits> int main() { using namespace std; short sam =SHRT_MAX; unsigned short sue =sam; cout<<"Sam has "<<sam<<" dollars and Sue has "<<sue; cout<<"dollars deposited."<<endl <<"Add $1 to each account."<<endl<<"Now"; sam = sam+1; sue=sue+1; cout<<"Sam has "<<sam<<" dollars and Sue has "<<sue; cout<<"dollars deposited.\n Poor Sam!"<<endl; sam=ZERO; sue=ZERO; cout<<"Sam has "<<sam<<"dollars and Sue has "<<sue; cout<<"dollars deposited"<<endl; cout<<"take $1 from each account."<<endl<<"Now"; sam =sam-1; sue =sue-1; cout<<"Sam has "<<sam<<"dollars and Sue has "<<sue; cout<<"dollars deposited."<<endl<<"LUCKY Sue!"<<endl; cin.get(); cin.get(); return 0; }

运行结果如下

//运行结果 Sam has 32767 dollars and Sue has 32767dollars deposited. Add $1 to each account. NowSam has -32768 dollars and Sue has 32768dollars deposited. Poor Sam! Sam has 0dollars and Sue has 0dollars deposited take $1 from each account. NowSam has -1dollars and Sue has 65535dollars deposited. LUCKY Sue!

sam为short类型变量; sue为unsigned short变量;都用SHRT_MAX函数取到最大short值为32767;然后将这些变量都加1。这对sue来说无非就是32767+1;但sam从32767便为了-32768!!因为short为16位,所以总共长度位2^16=65536;short为-32768~-1 +0+1~32767;unsigned short 0+1~65535;

3.初始化:C++独有 int rocs={7}; int exm={ };表示变量被初始化为0;

4.进制:在C++中一个数开头为1~9那么他为10进制;如果第一位为0,第二位1-7那么为8进制,如果前两位为0x或0X则为16进制。 0x42转换为十进制为164+2=66; 0xA5转换为十进制为1610+5=165; 042转换为十进制为4*8+2=34; 头文件iostream中提供了控制符dec、hex、oct、分别用于指示cout以十进制、十六进制、八进制格式显示整数。

//hex、oct控制符案例 #include<iostream> int main() { using namespace std; int a =42; int b =42; int c =42; cout<<"a="<<a<<"(10进制)"<<endl; cout<<hex; cout<<"b="<<b<<" (16进制) "<<endl; cout<<oct; cout<<"c="<<c<<" (8进制) "<<endl; cin.get(); cin.get(); return 0; }

结果如下

a=4210进制) b=2a (16进制) c=52 (8进制)

5.常量 6.char类型 成员函数cout.put():通过类对象cout来使用函数put()

//cout.put()函数用法 #include<iostream> int main() { using namespace std; char ch ='M'; int t=ch; cout<<t<<endl; cout.put(77)<<endl; cout.put(ch)<<endl; cout.put('M')<<endl; cin.get(); cin.get(); return 0; }

结果

77 M M M

常用转义字符:\n; \b; \a; \r;分别表示为换行;退格;振铃;回车;

7.signed char 和 unsigned char char用作数值类型时,两者直接差异非常重要;unsigned char可以储存0~255;而signed char 范围为-128~127;如果用char变量储存200这样的值,在有些系统上可以,在有些系统上则不行,如果使用unsigned char 就没有这些顾虑。 如果用char来储存标准ASCII字符,则char有没有符号都没有关系。

8.wcha_t wchar_t(宽字符类型)可以表示扩展字符集。wcin和wcout可用于处理wchar_t类型。另外,可以通过前缀L来指示宽字符常量和宽字符串。

9.bool类型 bool类型表示真假,C++将非0值解释为true,0解释为false。

bool is_ready = true;

true 和 false 都可以通过提升转换为int类型,true被转换为1,false被转换为0;

int ans = true;// ans=1; int promise = false;//promise=0;

然而任何数字和指针值都可以被隐式转换为bool值。

bool start =-100;//start 为 true; bool stop = 0;// stop 为 false;

(2)const 限定符

定义常量。 通用格式:const type name = value; const比 #define好 因为1.它可以明确指定的类型。2.可以使用C++的作用域规则将定义限制在特定的函数或文件中(在后面章节讨论)。3.可以将const用于更复杂的类型(数组和结构)。

(3)浮点数

表示带小数部分的数字,诸如2.5、3.14159、59555.666的数字。 1.书写 a.标准小数点表示法: 12.34 55555.6666 0.002 8.0 即使小数部分为0,也保留。 b.E表示法 3.45E6:3.45*10^6 其中6为指数,指数可以是正数或者负数,在C++中不能为小数; 2.浮点类型 C++有三种浮点类型:float、double、long double; 下面这个程序用来说明区分float 和double区别;

//区分float和double的程序 #include<iostream> int main() { using namespace std; cout.setf(ios_base::fixed, ios_base::floatfield); float tub = 10.0/3.0; double mint = 10.0/3.0; const float million = 1.0e6; cout<<"tub = "<< tub; cout<<",a million tubs = "<< million * tub; cout<<",\nand ten million tubs = "; cout<< 10* million *tub << endl; cout <<"mint = "<< mint <<"and a million mints = "; cout<<million * mint << endl; cin.get(); return 0; }

结果如下

tub = 3.333333,a million tubs = 3333333.250000, and ten million tubs = 33333332.000000 mint = 3.333333and a million mints = 3333333.333333

程序说明:

通常cout会删除结尾的0,例如3333333.250000显示为3333333.25。调用cout.self()将覆盖这种行为。cout只打印六位小数,因此tub和mint都是精确的。而当他们乘了一百万,tub在第七个3之后出现了误差。(该系统只保证float至少有6位有效位)。而对于double,系统保证了15位有效位。当mint乘一百万再乘1000后才会出现误差。 cout<<mint*million*10000<<endl;//运行结果为33333333333.333336,显然不对嘛!

3.浮点常量 如果希望常量为float常量类型,请使用f或F后缀。对于long double则使用L或l,(L是更好的选择,因为l像1)。2.24,2.6E8这样的浮点常量属于double类型。 关于浮点常量加后缀和原先有什么区别请参考链接

(4)算术运算符

除法分支 C++中 9/5=1(整型);9.0/5.0=1.8(浮点);9.0/5=1.8(整型和浮点混合混合);浮点常量再默认下为double类型。 类型转换

初始化和赋值进行的转换

程序中有如下定义

short a; long b;

而程序中有这样的语句

b=a;

那么a的类型将转为b的类型; 往往精度大的值转换为精度小的值将出现问题:double转为float,再这种情况下结果不确定;浮点类型转换为整型:小数点后面的数据丢失,有误差;long转换为short,原来的值可能超出目标类型的取值范围。 0赋给bool,变成false。非零变为true;

以{}方式初始化时进行的转换 该初始化称为列表初始化,特点是不允许缩窄。浮点型不能到整型,而整型可以转换为u浮点型。long变量可以被初始化为int,因为long总是至少与int一样长。

表达式中的转换

强制类型转换 在变量ipp中的int类型转换为long可以使用下述表达式的一种:

(long)ipp; long(ipp);

强制类型转换不会修改ipp变量本身,而是创建一个新的、指定类型的值,可以在表达式中使用这个值。 cout<<int('ipp'); 强制转换的通用格式: (typeName) value typeName (value) 例子如下:

#include<iostream> int main() { using namespace std; int auks,bats,coots; auks=19.99+11.99; bats=(int)19.99 + (int)11.99; coots=int(19.99)+int(11.99); cout<<"auks = "<<auks<<", bats = "<<bats; cout<<", coots= "<< coots <<endl; char ch ='Z'; cout<<"The code for "<<ch<<" is "; cout<<int(ch)<<endl; cout<<"yes,the code is "; cout<< static_cast<int>(ch)<<endl; cin.get(); return 0; }

运行结果为

auks = 31, bats = 30, coots= 30 The code for Z is 90 yes,the code is 90

auto声明 让编译器根据初始值类型推断变量类型:

auto n = 100;//n is int auto x = 1.5;//x is double auto y = 1.3e12L;//y is long double

但也会出现误判,谨慎使用,以后在STL用。

终于写完了,学的有点慢,多多体谅,加油,没有什么可以阻挡我们!

最新回复(0)