vs安装教程地址
vs测试
--主要讲述变量的命名规则
c++基本整形:char short int long,char类型有一些特殊属性(常用来表示字符,而不是数字)
short 是short int的缩写,long 是 long int 的缩写。
计算机内存由位(bit)单元组成。可以将位(bit)看成电子开关,0,1。8位的内存块可以设置出256种不同的组合:2的8次方。因此8位单元可以表示0-255或者-128-127
Q1.为什么对变量进行初始化?
如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的。这意味着该变量的值将是它被创建之前,相应内存单元保存的值。
关键字:unsigned
注意,unsigned 本身是 unsigned int 的缩写。
short 和 unsigned short 的范围,注意越界概念,上溢或者下溢。
int被设置为对目标计算机而言最“自然”的长度,自然长度就是计算机处理起来效率最高的长度。
变量表示的值不可能为负数,选择unsigned类型,可以表示更大的范围。
如果不知道选择什么类型,选int 。
控制输出的方式,是十六进制、八进制格式。
hex、oct 分别控制输出十六进制和八进制。
cout<<"year="<<1678<<"\n"
程序的生命将特定的整型变量的类型告诉编译器,在没有特殊的限定,程序把1678存储为int类型
。
char 类型是转为存储字符而设计的。char类型是另一种整形,能够表示目标计算机系统中的所有基本符号--所有的字母、数字、标点符号。
第一个成员函数:cout.put(),通过类对象cout来使用函数put(),句点被称为成员运算符。
c++转义序列的编码:换行符“\n”,回车“\r”,水平制表符“\t"
换行符可替代endl,用于在输出中重启一行。下面三行代码都将光标移动到下一行开头:
cout<\n";
cout<<'\n';
const int Months=12;
和#define类似,c++更好的对符号常量的处理是关键字const。
常量被初始化之后,其值就被固定下来,编译器将不允许修改常量的值了。
创建常量的通用格式:
const type name = value;
c++有两种书写浮点数的方式。常规小数点,E。
3.45E6,表示3.45x10的六次方。
8.33E~4表示8.33/10的四次方。
c++有三种浮点类型:float、double、long double。
float的精度比double的精度低。
8.24和2.4E8这种属于double类型。
1.234f 属于float类型。
将类型分类:
整数和浮点数统称为算术类型。
类型char、short、int、long统称为符号整形。
类型float、double、long double统称为浮点型。
基本算术 运算符:加法,减法,乘法,除法,求模。
对于float,c++只保证6位有效位。
将61.419998四舍五入成6位,将得到61.4200.
遵从先乘除,后加减。
如果优先级相同:
float logs=120/4*5; //从左到右
如果两个操作数都为整数,结果的小数部分将被丢弃,最后的结果是一个整数。
如果其中有一个(或两个)操作数都是浮点数,则小数部分将被保留,结果为浮点数
---
记住:两个操作数都为double类型,则结果为double类型。如果两个操作数都是float类型,结果为float类型。
浮点常量在默认情况下为double类型。
---
9/5=1
9.0/5.0=1.800000
9.0/5=1.800000
为处理11种整形和3种浮点类型,类型进行运算时,c++会自动执行很多类型转换 :
1.将一种算术类型的值赋给另一种算术类型的变量时,c++将对值进行转换;
2.表达式中包含不同的类型时,c++将对值进行转换;
3.将参数传递给函数时,c++将对值进行转换;
---
潜在数值转换后的问题
如double转化为float:精度降低;浮点类型转换为整形:小数部分丢失;
---
将0赋给bool变量时,将被转换成为false,而非零的值将被转换成为true。
---
1.初始化和赋值进行的转换
2.以{
}方式初始化时进行的转换
3.表达式中的转换
4.传递参数时的转换
5.强制类型转换
//强制类型转换不会修改thorn变量本身,而是创建一个新的、指定类型的变量。
//强制类型转换的格式:
(typename) value;
typenname (value);//纯粹的c++风格
//强制类型转换有两种表示方式,将存储在thorn中的int值转换为long类型时,可以表示为:
(long) thorn;
long (thorn);
auto能够根据初始值的类型推断变量的类型
auto n=100;
自动推断类型不是为这种简单情况设计的。处理复杂类型,如标准模块库(STL)中的类型时,自动类型推断才用上。
std::vector<double> scores;
auto pv=scores.begin();
1.为什么c++有多种整形?
c++整形变量一共11种,基本整型有四种:char,short,int,long 。可以根据特定的需求选择最合适的类型。
例如可以用short来存储空格,用long来保证存储容量。提高计算的速度。
2.声明下面描述相符合的变量。
short n=80;
unsigned int n=42110;
unsigned long int n=3E10; //值为300000000的整数
3.c++提供了什么措施来防止超出整形的范围?
c++没有提供自动防止超出整型限制的功能,可以使用头文件climits来确定限制的情况。//书第40页
4.33L与33之间有什么区别?
33L为长整型,33为int类型。//标准答案:33L的类型为long,33的类型为int。
5.下面两条语句是否等价?
char grade=65;
char grade=’A‘;
//答案:不等价 第一个 65是int常量,第二个A是char常量,字符串。
6.如何使用c++来找出编码是88表示的字符?
方法1:
char c = 88;
cout<<c<<endl;
方法2:
cout.put(char(88));
方法3:
cout<<char(88);
方法4:
cout<<(char)88;
7.将long值赋给float变量会导致舍入误差,将long值赋给double变量呢?将long long值赋给double呢?
这个问题的答案取决于这两个类型的长度。如果long为4字节,则没有损失。因为long的最大值将是20亿,即10位
数。由于double提供了至少13位有效数字,因而不需要进行任何舍入。long long类型可提供19位有效数字,超
过了double保证的13位。
8.下列c++表达式的结果分别是多少?
a.8*9+2;//74
b.6*3/4; //4
c.3/4*6; //0
d.6.0*3/4; // 18.0/4is4.5
e.15%4; //3
9.
double x1;
double x2;
int(x1);
int(x2);
int x3=x1+x2;
---
double x1;
double x2;
int x3=int(x1+x2);
10.下面每条语句声明的变量都是什么类型?
a.auto cars=15; //int
b.auto iou=150.37f; //float
c.auto level='B' //char
d.auto crat=U'/u00002155' // 这个是char32_t
e.auto fract=8.25f/2.5 //double 整形提升,看第64页
===
1. 后面的2.5如果后面不加f的话,就是个double类型的值
2. /的两个操作数一个是float一个是double,float向double方向做类型提升(Type promotion)
3. 两个double的结果还是double,所以auto 的类型推断就认为fract是个double了
答案链接
1.
需要一些比基本类型复杂的数据类型---复合类型,这种类型是基于基本类型和浮点类型创建的。影响最为深远的复合类型就是---类是学习面向对象OOP的关键。
声明数组的通用格式:
typeName arrayName[arraySize]
---
short months[12]
sizeof运算符返回类型或数据对象的长度(单位是字节)。如果将sizeof运算符用于数组名,得到的将是整个数组中字节数,如果sizeof用于数组元素,就是元素的长度(单位是字节)。
将数组中所有元素都初始化为0:
long totals[500]={
0};
如果初始化{
1}而不是{
0},则第一个元素被设置为1,其他元素都被设置成0.
1.可以省略=
double earning[4