/* C++变量类型
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。
数据类型+变量名=值;
int i, j, k;
char c, ch;
float f, salary;
double d;
extern int d = 3, f = 5; // d 和 f 的声明
int d = 3, f = 5; // 定义并初始化 d 和 f
byte z = 22; // 定义并初始化 z
char x = 'x'; // 变量 x 的值为 'x'
不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。
extern关键字详解: https://www.jianshu.com/p/111dcd1c0201 https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html
当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。
例如:
// 函数声明
int func();
int main()
{
// 函数调用
int i = func();
}
// 函数定义
int func()
{
return 0;
}
例如:
#include <iostream>
using namespace std;
// 变量声明
extern int a, b;
extern int c;
extern float f;
int main ()
{
// 变量定义
int a, b;
int c;
float f;
// 实际初始化
a = 10;
b = 20;
c = a + b;
cout << c << endl ;
f = 70.0/3.0;
cout << f << endl ;
return 0;
}
*/
/*
C++变量作用域
局部变量:在函数或一个代码块内部声明的变量;
形式参数:在函数参数的定义中声明的变量;
全局变量:在所有函数外部声明的变量。
在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。
常量
常量是固定值,在程序执行期间不会改变,这些固定的值又叫做字面量
常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。
常量就像是常规的变量,只不过常量的值在定义后不能进行修改。
字符常量:
\b 退格键
\f 换页符
\n 换行符
\r 回车
\t 水平制表符,tab键
\v 垂直制表符
字符串常量
字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。
您可以使用 \ 做分隔符,把一个很长的字符串常量进行分行。
定义常量:
使用 #define 预处理器。格式:#define identifier value 例如:#define WIDTH 5
使用 const 关键字,使用 const 前缀声明指定类型的常量。格式: const type variable = value;
修饰符常量:
修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。
修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。
C++ 允许使用速记符号来声明无符号短整数或无符号长整数。您可以不写 int,只写单词 unsigned、short 或 long,int 是隐含的。
例如:
#include <iostream>
using namespace std;
/*
* 这个程序演示了有符号整数和无符号整数之间的差别
*/
/*
int main()
{
short int i; // 有符号短整数
short unsigned int j; // 无符号短整数
j = 50000;
i = j;
cout << i << " " << j;
return 0;
}
结果: -15536 50000 无符号短整数 50,000 的位模式被解释为有符号短整数 -15,536
const 类型的对象在程序执行期间不能被修改改变。
修饰符 volatile 告诉编译器不需要优化volatile声明的变量
*/
/*存储类
auto 存储类,声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。
register 存储类,用于定义存储在寄存器中而不是 RAM 中的局部变量
static 存储类,指示编译器在程序的生命周期内保持局部变量的存在,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值,static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
例如:
#include <iostream>
// 函数声明
void func(void);
static int count = 10; /* 全局变量 */
int main()
{
while(count--)
{
func();
}
return 0;
}
// 函数定义
void func( void )
{
static int i = 5; // 局部静态变量
i++;
std::cout << "变量 i 为 " << i ;
std::cout << " , 变量 count 为 " << count << std::endl;
}
*/
/*
extern 存储类:用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候
mutable 存储类,允许对象的成员替代常量
thread_local 存储类,使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。 thread_local 说明符可以与 static 或 extern 合并。
可以将 thread_local 仅应用于数据声明和定义,thread_local 不能用于函数声明或定义。
*/
C++ NUM2
最新推荐文章于 2024-08-09 10:25:03 发布