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

C++ 【2】

(1)简单变量

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

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

sizeof:字节长度 用法:

  1. sizeof(类型名)如sizeof(int);
  2. 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转换为十进制为16
10+5=165;
042转换为十进制为4*8+2=34;
头文件iostream中提供了控制符dechexoct、分别用于指示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(宽字符类型)可以表示扩展字符集。wcinwcout可用于处理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

程序说明:

  1. 通常cout会删除结尾的0,例如3333333.250000显示为3333333.25。调用cout.self()将覆盖这种行为。
  2. 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用。

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值