【C++笔记】第二章 变量和基本类型.cc

整数 浮点数 单个字符 布尔值 void

算术类型的存储空间大小依机器而定。
大小指该类型的二进制位(bit)数。

整型        最小存储空间
bool		-
char		8位
wchar_t		16位
short		16位
int			16位
long		32位
浮点型
float		6位有效数字
double		10位有效数字
long double 10位有效数字

bool 非0为true ,0为false。
unsigned 大于等于0
signed 大于0,小于0,等于0
unsigned 后面不加类型,即等于 unsigned int


整型赋值
超过最大,求模后再赋值。
比如336赋值给 unsigned char ,8位,是0-255,336对256(取值数目,一共是256个)求模,是80.最后把80赋值给 unsigned char


浮点数 
float 6位有效数字,不能满足大部分需求。一般使用 double ,至少保证10位有效数字。

char 用来存储字符 而不用来计算

long 对于 int 来说,计算代价高。

使用 double 基本不会错


十进制 20
八进制 024
十六进制 0x14

128U
1024UL
1L
8LU

3.14159F 
.001f
12.345L
0.
3.14159E0f
1E-3F
1.2345E1L
0e0

bool test = false;
'a'
'2'
','
' '

\n \t \v
\b \r \f
\a \\ \?
\' \"

'\0'

"Hello World!"
""
"\nCC\toptions\tfile.[cC]\n"
兼容C语言,C++所有字符串字面值都由编译器自动在末尾添加一个空字符。

'A'表示单个字符A
"A"表示包含字母A和空字符两个字符的字符串


宽字面值 
L'A'   wchar_t 型字面值
L"a wide string literal"

字符串字面值的链接
std::cout << "a multi-line "
             "string literal "
			 "using concatenation"
		  << std::endl;

// Concatenating plain and wide character strings is undefined
std::cout << "multi-line " L"literal " << std::endl;


多行字面值
std::cou\
t << "Hi" << st\
d::endl;
等价于 
std::cout << "Hi" << std::endl;

注意 反斜线字符符号必须是该行的尾符号

std::cout << "2M" << '\n';
std::cout << "2" << '\t' << "M" << '\n';


#include <iostream>
int main() {
	int value = 2;
	int pow = 10;
	int result = 1;
	for (int i = 1; i <= pow; i++) {
		result *= value;
	}


	return 0;
}

变量
左值 右值

变量名 
由字母 数字 和 下划线组成
必须以字母和下划线开头,大小写敏感
int somename, someName, SomeName, SOMENAME
C++关键字


int units_sold;
double sales_price, avg_price;
std::string title;
Sales_item curr_book;

double salary, wage;
int month, day, year;
std::string address;


变量初始化形式:直接初始化和复制初始化
int ival(1024); // 直接初始化
int ival = 1024; // 复制初始化

std::string titleA = "C++ Primer, 4th Ed."
std::string titleB ("C++ Primer, 4th Ed." );


计数器和字符
std::string all_nines (10, '9')

double salery = 9999.99, wage(salery + 0.01);
int interval, month = 8, day = 8, year = 1995;
std::string title("C++ Primer, 4th Ed."), publisher = "A-W";
double price = 109.99, discount = 0.16;
double sale_price = apply_discount(price, discount);

一 内置类型变量的初始化
是否自动初始化取决于变量定义的位置。
1. 函数体外的变量初始化成0.
2. 函数体内的变量不初始化

二 类类型变量的初始化
不管变量在哪里定义,默认构造函数都会被调用。

std::string global_str;
int global_int;
int main() {
	int local_int;
	std::string local_str;
	
	return 0;
}

声明和定义

C++程序由多个文件组成。为了让多个文件访问相同的变量,C++区分了声明和定义。
定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。

声明:用于向程序表名变量的类型和名字。
定义也是声明。

通过使用 extern 关键字声明变量名而不定义它。
extern int i;   // declares but does not defines i
int i; // declares and defines i

extern 声明不是定义,也不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。

注意:程序中变量可以声明多次,但只能定义一次。
extern double pi = 3.1416  //definition
double pi; // error:redefinition of pi


extern double pi = 3.1416; //definition
extern double pi; // ok:declaration not definition
extern double pi = 3.1416; // error:redefinition of pi


引用类型

引用必须用与该引用同类型的对象初始化
int ival = 1024;
int &refVal = ival;
int &refVal2; // 错误,引用类型必须初始化
int &refVal3 = 10; // 错误,引用类型必须是一个对象,而不是一个字面常量值

引用强调“绑定”的概念。
引用就是别名,引用只能绑定到初始化时的那个对象上面,不可更改。 
refVal += 2;
int ii = refVal;

 重要:引用只是对象的另一名字。

初始化是指明引用指向哪个对象的唯一方法。

int i = 1024, i2 = 2048;
int &r = i, r2 = i2;
int i3 = 1024, &ri = i3;
int &r3 = i3, &r4 = i2;

const 引用
是指向 const 对象的引用。
const int ival = 1024;
const int &refVal = ival;// 正确,引用和对象都是const的。
int &ref2 = ival;// 错误,引用不是const,但ival是const的。

const 引用可以初始化为不同类型的对象或初始化为右值,如字面常量
int i = 42;
// legal for const refrences only
const int &r = 42;
const int &r2 = r + i;



特例
double dval = 3.14;
const int &ri = dval;
编译器会转换:

int temp = dval;
const int &ri = temp;


枚举是常量
enum open_modes {
	input, output, append
};

类类型
每个类都定义了一个接口和实现。

Sales_item类
操作:
1. 加法操作符,两个Sales_item 相加
2. 输入和输出操作符,读和写Sales_item对象
3. 赋值操作符
4. same_isbn函数

定义Sales_item类
class Sales_item {
public:

private:
	std::string isbn;
	unsigned units_sold;
	double revenue;
};

花括号后必须有分号!

struct 关键字 


struct Sales_item {
	private:
		std::string isbn;
		unsigned inits_sold;
		double revenue;
};
struct的成员都是public,除非其他特殊的声明。


头文件包含在多个源文件中,所以不应该含有变量或函数的定义。

避免多重包含
预处理器变量有两种状态:已定义或未定义。

#ifndef SALESITEM_H

#define SALESITEM_H

#endif











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值