Visual C++ 2010 入门经典
来源:互联网 发布:php公开课 编辑:程序博客网 时间:2024/06/06 00:35
第二章 数据、变量和计算
2.2 定义变量
- 变量名包含字母、数字、下划线,必须以字母或下划线开头,不允许空格,区分大小写。变量是一段内存,可引用和存储数据
- 变量声明也属于定义(特殊情况除外)
int value; %既是声明也是定义
- 声明是将名称以及这个名称用途的信息引入程序;定义设计分配这个名称的计算机内存
- 变量初始化
int value = 0;int value(0);// 函数表示法
2.3 基本数据类型
三类基本数据类型:存储整数的类型、存储非整数值的类型(浮点类型)、指定空的值集或不指定任何类型的 void 类型。
- int 占用4个字节
- long 占用4个字节,也可以写作 long int
long value3 = 30L; // L 表示 long 型,没有附加 L 则是 int 型
- long long 型占用8个字节,以 LL 结尾
- char 占用1个字节
−27∼27−1 可以存储给定值域内的整数或者存储单个 ASCII 字符的代码。
char letter = 'A'; // ' '之间单个字符char letter = 65; // A 的 ASCII 值是65。
- wchar_t 占用2个字节,表示宽字符型
wchar_t letter = (0x5A); // 0x 表示16进制,左高右低wchar_t letter = L'Z'; // L 表示16位字符代码值 wchar_t letter = (L'Z'); // 函数表示法
- 整型修饰符
默认 char、int、 short、long 整型变量将存储 signed 整数值▶ char 和 signed char 表示不同类型。
signed value = -5; // 单独使用关键字,signed表示intunsigned long value = 5UL; // U 表示无符号
- Bool类型
只有两个值的变量: true、 false,被认为是整数类型。
bool result = true; bool result = (true);
- 浮点类型
浮点型必须包含一个小数点或者一个指数或者两者都有。如果数字值既没有小数点也没有指数,则是整数。double 占用8个字节; float 占用4个字节
double value = 5.2;float pi = 3.14159f; // f表示浮点型
图 1 - 基本数据类型
在C++中,所有类型的常数都称为字面值
▶ 不能指定short型或者unsigned short 型的字面值
图 2 - 字面值定义数据类型的同义词
typedef 为现有的类型定义自己的类型名称。
typedef long int BigOnes;BigOnes mynum = 0L;
- 具有特定值集的变量
枚举:
enum Week {Mon,Tues,Wed,Thurs,Fri,Sat,Sun} thisWeek; // 声明了名称为 Week 的枚举类型,thisWeek 只能采用大括号之间指定的常量值。thisWeek = Thurs; // thisWeek的值是3。enum Week nextWeek; // 也可以忽略关键字 enum enum Week {Mon = 1,Tues,Wed,Thurs,Fri,Sat,Sun } thisWeek; // 默认从0开始。
2.4 基本输入输出操作
- 从键盘输入
通过标准输入流 cin 从键盘获得输入,使用流的析取运算符 >> ,忽略空白。
std::cin >> num1 >> num2; // 连续的值之间必须有一些空白,以便区分
到命令行的输出
通过标准输出流 cout 使用插入运算符 << 把数据传递到输出流。格式化输出
利用操作符处理输出对齐问题。操作符在标准库头文件iomanip 中定义,因此需要添加头文件。
setw(n)}输出的值在 n 个空格宽的字段中遵循右对齐.setw(n) 只紧跟在它的插入运算符之后的单个输出值起作用。转义序列
以反斜杠开头
图 3 - 转义序列
2.5 C++中的计算
- const修饰符
const double width = 21.5*2.0; const double area = width*length; // 编译器必须清楚常量表达式中的所有变量
- 修改变量
lhs op= rhs // op : + - * / % << >> & ^
等价于
lhs = lhs op (rhs)
++ count;--count;count ++ ;count -- ;count += 1;count -= 1;
图 4 - 运算符
2.6 类型转换和强制类型转换
先类型转换再运算,转换过程中不会改变被转换变量本身的类型,临时存储,运算完成后释放。
任何 char、signed char、unsigned char、short、unsigned short 在操作之前至少被转换成 int 类型。
▶ 赋值语句中的隐式类型转换会造成信息丢失。显示类型转换
static_cast<the type to convert to>(expression);}
- 转换优先级
long double > double > float > unsigned long long > long long > unsigned long > long > unsigned int > int
2.7 Auto 关键字
- auto关键字用作变量的类型,根据初始值判断变量的类型。初始值也可以是表达式
▶ 表达式中的变量必须在之前初始化
auto n = 16; // Type is intconst auto pi = 3.14159L; // Type is long double
2.8 查看类型
- typeid操作符可以查看表达式的类型:
typeid(expression).name()
- 需要头文件 #include < typeinfo >
cout << "Type of x*y is" << typeid(x*y).name() << endl;
2.9 按位运算符
- 按位运算符只处理整型变量或者整型常量,把操作数看成一系列单独的位。
- 运算符有: & 与 ; | 或 ; ^ 异或 ; ~ 非 ; >> 右移 ; << 左移
- 按位与操作可进行掩码操作,把变量中不必要的位设置为0,必要的位设置为1。
char first = 'A'; char last = 'Z'; first ^= last;last ^= first;first ^= last; // 交换A和Z,适用于所有值
- 移位运算要补0。只要位不丢失,向左移动 n 位,相当于原值乘以
2n ; 向右移动 n 位,相当于原值除以2n - 要注意移位运算符和输入/出流运算符的区分,加括号来区分
- 要注意有符号整数的移位运算。有符号整数移位时,符号位将向右传递。
char number = -104; // Binary representation is 1001 1000number >>= 2; // Result is 1110 0110
2.10 lvalue 和 rvalue
- lvalue 指的是内存中持续存储数据的一个地址;rvalue是临时存储的表达式结果。所有产生lvalue的表达式都可以出现在赋值语句中等号的左边。表达式的结果不是lvalue就是rvalue。
int a = 0 , b = 0 , c =0;a = b + c; // b + c 的结果临时存储在一个内存位置中,赋值后则丢弃结果的内存位置。 b + c 的结果是 rvalue b = ++a;// ++a的结果是递增之后的 a ,a++是 lvaluec = a++; // a++临时将 a 的值存储为表达式的结果,然后递增 a , ++a 是rvalue
2.11 了解存储时间和作用域
变量可以有三种不同的存储时间:自动存储时间;静态存储时间;动态存储时间。
自动变量
在一个代码块内声明的变量,具有局部作用域。自动变量占用的空间在一个称为栈的内存区域中自动分配。生存期是执行过程中的一个期间,从创建该变量开始,到销毁该变量并且释放其占用的内存时结束。
变量的作用域是指可以在其中访问这个变量的程序代码区域。
内部作用域可以访问在外部作用域开始处声明的变量,而且会修改外部作用域变量的值。全局变量
在所有代码块和类之外声明的变量称为全局变量,具有全局作用域。表明在全局变量声明的位置之后,所有的函数都可以访问他们。在默认情况下,全局变量具有静态存储时间,从程序开始到程序结束时为止。全局变量的初始化在 main( ) 函数执行之前。▶ 全局变量可被具有相同名称的局部变量隐藏,可用域解析运算符 :: 获得全局变量
图 5 - 作用域静态变量
在一个代码块作用域内声明一个变量,但是要要让它有静态存储时间,利用 static 可以实现该功能。实际上,即使静态变量是在一个代码块中声明,并且只能从这个代码块内部使用,但是在程序的生存期内,它将持续存在。它的作用域仍然是这个代码块,但具有静态存储时间。
static int count; // 如果声明静态变量时,没有提供初始值,则程序对它进行初始化。默认初始值为0。
2.12 名称空间
利用 using 声明将一个名称从 std 名称空间导入源文件。
using std::cout; //这就允许在源文件中使用名称cout且它被解释为std::out。之后的代码使用此名称时无需限定符。
- 名称空间提供了一种将在程序某一部分使用的名称与另一部分使用的名称分隔开的方法。例如:多人协作的项目,避免相同名称应用到不同的函数,造成的混淆。
using namespace std ; // using 指令
与 using 声明不同,其作用是把来自 std 的名称空间的所有名称导入源文件。这样就可以引用在该名称空间中定义的所有名称,而不必在程序中限定名称。实际上否定了使用名称空间的主要原因——即防止意外的名称冲突。
声明名称空间
定义自己的名称空间.利用关键字 namespace 可以声明一个名称空间
namespace myStuff{// Code that I want to have in the namespace myStuff}
- 多个名称空间
对于一个具有给定名称的名称空间,可以有多个声明,所有具有给定名称的名称空间块的内容都可以在同一个名称空间内。
namespace myStuff{}namespace caculateStuff{//从该名称空间块内引用第一个名称空间快中的名称,必须限定他们。} namespace myStuff{//第一个声明的继续,该名称空间块内引用第一个名称空间块中的名称,不必限定他们}
- Visual C++ 2010 入门经典
- 《Visual C++ 2010入门经典》读书笔记
- visual c++ 2010 入门经典 笔记
- 《编程经典Visual C++》
- Visual C++ 2008入门经典
- DataGrid入门经典(C#)
- C语言入门经典
- 《Visual C# 2005入门经典》学习总结
- Visual C++ 2005入门经典 - 好书看看!!!
- Visual C++ 2008入门经典 Ivor Horton
- 《Visual C++ 2012入门经典》杂记
- 强烈推荐visual c++ 2012入门经典适合初学者入门
- 强烈推荐visual c++ 2012入门经典适合初学者入门
- C#(1)经典入门
- c语言经典入门题
- 《Visual C++ 2010入门经典》(第五版)-第七章 自定义数据类型
- Visual c++ 2010入门
- Visual.C#.2010从入门到精通].(Visual.C#.2010.Step.By.Step)读书笔记 变量(一)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Trig Function
- 快速可靠协议:KCP
- leetcode 476. Number Complement(C语言)
- @Repository @ENTITY
- 图论——寻找最短路径路线的两种算法
- Visual C++ 2010 入门经典
- OpenJudge百炼-2804-词典-C语言-二分查找
- 大三上学期尝试考研的日子(流水账)
- TypeScript
- 爬虫-04-scrapy代码编写
- 登陆界面的前台与后台
- 问题总结
- 莫队
- 统计在线用户及人数