C++基本语法、数据类型、变量、常量

类的肤浅理解

现在让我们简要地看一下什么是类、对象、成员变量、成员方法:

  • 类:可以表示一种类型事物,可以包含其属性和行为。
  • 对象:对象是类的一个实例,它具有类包含的属性和行为。
  • 成员变量:是类中定义的属性。
  • 成员函数:是类中定义的方法。

例如狗:

有很多品种的狗,我们可以把狗这个种类定义为一个类。

狗的特征有:颜色、名称、品种等,这些特征就是我们的成员变量要表达的东西;

狗的行为有:摇动、叫唤、吃等,这些行为就是我们的成员函数要表达的东西。

对象就是狗类的一个真实例子,例如王二家有一个土狗,张三家有一个金毛。

C++ 标识符

  1. C++ 标识符是用来标识变量、函数、类、命名空间等,或任何其他用户自定义类型的名称。
  2. 一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
  3. C++ 标识符内不允许出现标点字符,比如 @、& 和 %。
  4. C++ 是区分大小写的编程语言。

例如下面有效的标识符:

world       test    aaaa   dog_name  _a_123
MYDOG   _temp__   j     a23b9    _fas_23_AA

C++ 关键字

这些保留字不能作为常量名、变量名或其他标识符名称

asm	else	new	this
auto	enum	operator	throw
bool	explicit	private	true
break	export	protected	try
case	extern	public	typedef
catch	false	register	typeid
char	float	reinterpret_cast	typename
class	for	return	union
const	friend	short	unsigned
const_cast	goto	signed	using
continue	if	sizeof	virtual
default	inline	static	void
delete	int	static_cast	volatile
do	long	struct	wchar_t
double	mutable	switch	while
dynamic_cast	namespace	template	 

C++ 注释

/* 这是单行注释 */
int age = 10;

// 这也是单行注释
int grade = 1;
 
/* 
 * C++ 注释也可以
 * 跨行注释
 */
char* name = "duye";

C++ 数据类型

使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。

您可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。

基本的内置类型
C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void

一些基本类型可以使用一个或多个类型修饰符进行修饰:

  • signed
  • unsigned
  • short
  • long

下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

类型范围
char1 个字节-128 到 127 或者 0 到 255
unsigned char1 个字节0 到 255
signed char1 个字节-128 到 127
int4 个字节-2147483648 到 2147483647
unsigned int4 个字节0 到 4294967295
signed int4 个字节-2147483648 到 2147483647
short int2 个字节-32768 到 32767
unsigned short int2 个字节0 到 65,535
signed short int2 个字节-32768 到 32767
long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int8 个字节0 to 18,446,744,073,709,551,615
float4 个字节+/- 3.4e +/- 38 (~7 个数字)
double8 个字节+/- 1.7e +/- 308 (~15 个数字)
long double16 个字节+/- 1.7e +/- 308 (~15 个数字)
wchar_t2 或 4 个字节1 个宽字符, 是一种扩展的存储方式,主要用在国际化程序的实现中

变量的大小会根据编译器和所使用的电脑而有所不同。

下面实例会输出您电脑上各种数据类型的大小。

#include <iostream>  
#include <string>  
#include <limits>

using namespace std;  
  
int main() {  
    cout << "type: \t\t" << "************size**************"<< endl;  
    cout << "bool: \t\t" << "所占字节数:" << sizeof(bool);  
    cout << "\t最大值:" << (numeric_limits<bool>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<bool>::min)() << endl;  
    cout << "wchar_t: \t" << "所占字节数:" << sizeof(wchar_t);  
    cout << "\t最大值:" << (numeric_limits<wchar_t>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<wchar_t>::min)() << endl;  
    cout << "short: \t\t" << "所占字节数:" << sizeof(short);  
    cout << "\t最大值:" << (numeric_limits<short>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<short>::min)() << endl;  
    cout << "int: \t\t" << "所占字节数:" << sizeof(int);  
    cout << "\t最大值:" << (numeric_limits<int>::max)();  
    cout << "\t最小值:" << (numeric_limits<int>::min)() << endl;  
    cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);  
    cout << "\t最大值:" << (numeric_limits<unsigned>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned>::min)() << endl;  
    cout << "long: \t\t" << "所占字节数:" << sizeof(long);  
    cout << "\t最大值:" << (numeric_limits<long>::max)();  
    cout << "\t最小值:" << (numeric_limits<long>::min)() << endl;  
    cout << "unsigned long: \t" << "所占字节数:" << sizeof(unsigned long);  
    cout << "\t最大值:" << (numeric_limits<unsigned long>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned long>::min)() << endl;  
    cout << "double: \t" << "所占字节数:" << sizeof(double);  
    cout << "\t最大值:" << (numeric_limits<double>::max)();  
    cout << "\t最小值:" << (numeric_limits<double>::min)() << endl;  
    cout << "long double: \t" << "所占字节数:" << sizeof(long double);  
    cout << "\t最大值:" << (numeric_limits<long double>::max)();  
    cout << "\t最小值:" << (numeric_limits<long double>::min)() << endl;  
    cout << "float: \t\t" << "所占字节数:" << sizeof(float);  
    cout << "\t最大值:" << (numeric_limits<float>::max)();  
    cout << "\t最小值:" << (numeric_limits<float>::min)() << endl;  
    cout << "size_t: \t" << "所占字节数:" << sizeof(size_t);  
    cout << "\t最大值:" << (numeric_limits<size_t>::max)();  
    cout << "\t最小值:" << (numeric_limits<size_t>::min)() << endl;
    
    return 0;  
}

结果:当上面的代码被编译和执行时,它会产生以下的结果,结果会根据所使用的计算机而有所不同:

type:           ************size**************
bool:           所占字节数:1   最大值:1               最小值:0
wchar_t:        所占字节数:4   最大值:2147483647              最小值:-2147483648
short:          所占字节数:2   最大值:32767           最小值:-32768
int:            所占字节数:4   最大值:2147483647      最小值:-2147483648
unsigned:       所占字节数:4   最大值:4294967295      最小值:0
long:           所占字节数:8   最大值:9223372036854775807     最小值:-9223372036854775808
unsigned long:  所占字节数:8   最大值:18446744073709551615    最小值:0
double:         所占字节数:8   最大值:1.79769e+308    最小值:2.22507e-308
long double:    所占字节数:16  最大值:1.18973e+4932   最小值:3.3621e-4932
float:          所占字节数:4   最大值:3.40282e+38     最小值:1.17549e-38
size_t:         所占字节数:8   最大值:18446744073709551615    最小值:0

typedef 声明

可以使用 typedef 为一个已有的类型取一个新的名字。下面是使用 typedef 定义一个新类型的语法:

typedef type newname;

例如,下面的语句会告诉编译器,int32 是 int 的另一个名称:

typedef int int32;

现在,下面的声明是完全合法的,它创建了一个整型变量 age:

int32 age = 0;

枚举类型

枚举类型是由用户定义的若干枚举常量的集合。
例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 “blue”。

// 定义类型
enum color { red, green, blue };

// 定义变量并赋初值
color c = green;

默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5。

enum color { red, green=5, blue };

上例中,red依然是从0开始,blue是6,他是按照前一个值往后递增。

C++ 变量类型

  • 变量其实只不过是程序可操作的存储区的名称。
  • C++ 中每个变量都有指定的类型,即所谓的强类型语言。
  • 类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中。
  • 运算符可应用于变量上。
  • 变量的名称可以由字母、数字和下划线字符组成。
  • 它必须以字母或下划线开头。
  • 大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。
C++ 中的变量定义

变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:

type variable_list;

type 必须是一个有效的 C++ 数据类型,可以是 char、wchar_t、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,如下所示:

type variable_name = value;

下面列举几个实例:

int d = 3, f = 5;           // 定义并初始化 d 和 f
byte z = 22;                // 定义并初始化 z
char x = 'x';               // 变量 x 的值为 'x'
C++ 变量作用域

作用域是程序的一个区域,一般来说有三个地方可以定义变量:

  • 在函数或一个代码块内部声明的变量,称为局部变量。
  • 在函数参数的定义中声明的变量,称为形式参数。
  • 在所有函数外部声明的变量,称为全局变量。
  • 在类中定义的变量,称为成员变量。
局部变量
  • 在函数或一个代码块内部声明的变量,称为局部变量。
  • 它们只能被函数内部或者代码块内部的语句使用。

实例:

  1 #include <iostream>
  2 
  3 void def_var();
  4 
  5 int main() {
  6     // 局部变量
  7     def_var();
  8     
  9     return 0;
 10 }   
 11 
 12 void def_var() {
 13     int a = 10;
 14     int b = 20;
 15     int c = a + b;
 16     
 17     std::cout << "a = " << a << std::endl;
 18     std::cout << "b = " << b << std::endl;
 19     std::cout << "c = " << c << std::endl;
 20     
 21     {
 22         std::cout << "a = " << a << std::endl;
 23         
 24         int d = 30;
 25         std::cout << "d = " << d << std::endl;
 26     }   
 27 }     

结果:

a = 10
b = 20
c = 30
a = 10
d = 30
全局变量
  • 在所有函数外部定义的变量(通常是在程序的头部),称为全局变量。
  • 全局变量的值在程序的整个生命周期内都是有效的。
  • 全局变量可以被任何函数访问。也就是说,全局变量一旦声明,在整个程序中都是可用的。

实例:

  1 #include <iostream>
  2 
  3 int g = 5;
  4 
  5 void print_var();
  6 
  7 int main() {
  8 
  9     print_var();
 10 
 11     std::cout << "g in main = " << g << std::endl;
 12 
 13     return 0;
 14 }
 15 
 16 void print_var() {
 17     std::cout << "g in print_var = " << g << std::endl;
 18 } 

结果:

g in print_var = 5
g in main = 5

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。

实例:

  1 #include <iostream>
  2 
  3 int g = 5;
  4 
  5 void print_var();
  6 
  7 int main() {
  8 
  9     print_var();
 10 
 11     std::cout << "g in main = " << g << std::endl;
 12 
 13     return 0;
 14 }
 15 
 16 void print_var() {
 17     int g = 10;
 18     std::cout << "g in print_var = " << g << std::endl;
 19 }

结果:

g in print_var = 10
g in main = 5
初始化局部变量和全局变量
  • 当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化,不然是一个随机值。
    实例:
  1 #include <iostream>
  2 int main() {
  3     int a;
  4     int b;
  5     int c;
  6     int d;
  7     int e;
  8     int f;
  9 
 10     std::cout << "a = " << a << std::endl;
 11     std::cout << "b = " << b << std::endl;
 12     std::cout << "c = " << c << std::endl;
 13     std::cout << "d = " << d << std::endl;
 14     std::cout << "e = " << e << std::endl;
 15     std::cout << "f = " << f << std::endl;
 16 
 17     return 0;
 18 }

结果:

a = 0
b = 0
c = 32765
d = 876087424
e = 0
f = 4196304
  • 定义全局变量时,系统会自动初始化为下列值:
数据类型初始化默认值
int0
char‘\0’
float0
double0
pointerNULL

实例:

  1 #include <iostream>
  2 int a;
  3 char b;
  4 float c;
  5 double d;
  6 int* p;
  7 
  8 int main() {
  9 
 10     std::cout << "a = " << a << std::endl;
 11     std::cout << "b = " << b << std::endl;
 12     std::cout << "c = " << c << std::endl;
 13     std::cout << "d = " << d << std::endl;
 14     std::cout << "p = " << p << std::endl;
 15 
 16     return 0;
 17 }

结果:

a = 0
b = 
c = 0
d = 0
p = 0

正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,所以请务必初始化局部变量。

C++ 常量

  • 常量是固定值,在程序执行期间不会改变。
  • 这些固定的值,又叫做字面量。
  • 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。
定义常量

在 C++ 中,有两种简单的定义常量的方式:

  • 使用 #define 预处理器。
  • 使用 const 关键字。
#define 预处理器

#define identifier value

实例:

  1 #include <iostream>
  2 
  3 #define LENGTH 10
  4 #define WIDTH 10
  5 #define AREA "area = "
  6 
  7 int main() {
  8 
  9     std::cout << AREA << LENGTH * WIDTH << std::endl;
 10 
 11     return 0;
 12 }

结果:

area = 100
const 关键字

const type variable = value;

实例:

  1 #include <iostream>
  2 
  3 const int LENGTH = 10;
  4 const int WIDTH = 10;
  5 const char* AREA = "area = ";
  6 
  7 int main() {
  8 
  9     std::cout << AREA << LENGTH * WIDTH << std::endl;
 10     
 11     return 0;
 12 } 

结果:

area = 100

有兴趣的朋友,请关注微信公众号,有机会获取平台代币:
Daozy社区公众号

进入社区贡献者微信群,有机会获取平台代币:
Daozy社区贡献者群

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道知极限编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值