《c++入门经典》笔记3

《c++入门经典》笔记3

第三章 创建变量和常量

3.1变量是什么

变量是计算机内存中的一个位置,您可以在这里存储和检索值。变量有地址,并赋予了描述其用途的名称。

例如int zombies = 2;其中zombies是变量名,2是其存储的变量值,但是它可能被放在了内存中的第101~104块,那么它的地址就是101~104(实际可能只显示头部地址)

 

c++创建变量时,须指定变量名称和类型,比如int a;,数据类型用于指定变量所占用的最大空间(单位为字节)

基本数据类型:(因操作系统平台不同,长度可能会有所不同)

类型长度(字节数)取值范围
unsigned short 2 0~65 535
short 2 -32 768~32 767
unsigned long 4 0~4 294 967 295
long 4 -2 147 483 648~2 147 483 647
int 4 -2 147 483 648~2 147 483 647
unsigned int 4 0~4 294 967 295
long long int 8 -9.2x1018 ~9.2x1018
char 1 256个字符
bool 1 true或false
float 4 1.2e-38~3.4e38
double 8 2.2e-308~1.8e308

其中须注意的是无符号数的长度虽然与有符号数的相同,但是从0开始

最特殊的是浮点数,浮点数的制定与其他的不同,它是依据IEEE754标准制定的,浮点表示法应该是一个programer掌握的最基本知识(以后会有深入理解计算机系统笔记,到时候会再行说明)

当然,c++也支持用户自定义的变量类型,比如用户定义的类或结构体。

要获取变量类型的长度,可使用sizeof()函数

 

程序清单3.1 Size.cpp

#include<iostream>
int main(){
   std::cout<<"The size of an integer:\t\t";
   std::cout<<sizeof(int)<<" bytes\n";
   std::cout<<"The size of a short integer:\t";
   std::cout<<sizeof(short)<<" bytes\n";
   std::cout<<"The size of a long integer:\t";
   std::cout<<sizeof(long)<<" bytes\n";
   std::cout<<"The size of a character:\t";
   std::cout<<sizeof(char)<<" bytes\n";
   std::cout<<"The size of a boolean:\t\t";
   std::cout<<sizeof(bool)<<" bytes\n";
   std::cout<<"The size of a float:\t\t";
   std::cout<<sizeof(float)<<" bytes\n";
   std::cout<<"The size of a double float:\t\t";
   std::cout<<sizeof(double)<<" bytes\n";
   std::cout<<"The size of a long long int:\t\t";
   std::cout<<sizeof(long long int)<<" bytes\n";
}

 

3.2定义变量

驼峰命名法:

对变量命名使用小驼峰命名法(首单词小写,其余单词首字母大写),如:newWroldRecord

对类名,名称空间使用大驼峰命名法(单词首字母均大写),如:DataBaseManager

除了驼峰命名法之外,没啥可记录的了。

 

3.3给变量赋值

赋值运算符: =

 

程序清单3.2 Rectangle.cpp

#include <iostream>

int main()
{
   unsigned short width = 26, length;
   length = 40;
   unsigned short area = width * length;
   std::cout << "Width: " << width << "\n";
   std::cout << "Length: " << length << "\n";
   std::cout << "Area: " << area << "\n";
   return 0;
}

 

3.4类型定义

类型定义关键字:typedef

 

程序清单3.3 NewRectangle.cpp

#include <iostream>

int main()
{
   typedef unsigned short USHORT;
   USHORT width = 26;
   USHORT length = 40;
   USHORT area = width * length;
   std::cout << "Width: " << width << "\n";
   std::cout << "Length: " << length << "\n";
   std::cout << "Area: " << area << "\n";
   return 0;
}

 

3.5常量

常量值不会改变,且必须在创建常量时对其进行初始化。c++支持两种类型的常量:字面常量与符号常量

字面常量是直接在需要的地方输入的值

比如:long width = 19;中,19就是字面常量,true与false也是字面常量。

符号常量是用名称表示的常量,与变量类型相似。声明符号常量时,需要使用关键字const,并在后面跟类型、名称和初值。

比如:const int KILL_BONUS = 5000;

也可定义常量,如:#define KILLBONUS 5000,由于这种c式定义法没有指定类型,编译器无法确保其值是合适的,所以建议采用const关键字,而非使用编译指令进行常量定义。

 

枚举常量是在一条语句中创建一组常量,使用关键字enum定义,枚举值放在大括号里,之间逗号进行分隔。

比如:enmu Color {RED=100,BLUE,GREEN=500,WHITE,BLACK=700};

 

程序清单3.4 Compass.cpp

#include <iostream>

int main()
{
   enum Direction
  {
       North,
       Northeast,
       East,
       Southeast,
       South,
       Southwest,
       West,
       Northwest
  };
   Direction heading;
   heading = Southeast;
   std::cout << "Moving " << heading << std::endl;
   return 0;
}

这里的输出结果是moving 3,原因是如果不进行显式初始化枚举常量,则枚举值从North开始默认为0,然后递增。

 

3.6自动变量

c++有一个关键字auto,可用于根据赋给变量的初值推断出变量的类型,该工作由编译器完成。

 

比如:auto rate=500/3.0等价于double rate=500/3.0

 

程序清单3.5 Combat.cpp

#include <iostream>

int main()
{
   auto strength = 80;
   auto accuracy = 45.5;
   auto dexterity = 24.0;

   const auto MAXIMUM = 50;

   auto attack = strength * (accuracy/MAXIMUM);
   auto damage = strength * (dexterity/MAXIMUM);
   std::cout<<"\nAttack rating: "<<attack<<"\n";
   std::cout<<"Damage rating: "<<damage<<"\n";

   return 0;
}

结果是:

Attack rating: 72.8 Damage rating: 38.4

 

如果上面这个程序您的编译器发出报错或警告,可能是您的编译器默认编译的c++版本在14以下,则使用以下编译命令尝试让编译器选择使用c++14进行编译:

g++ -std=c++14 Combat.cpp -o Combat.exe

(Linux下大同小异)

posted @ 2020-07-13 15:48  小立哥  阅读(150)  评论(0编辑  收藏  举报