No.4十六届蓝桥杯备战|变量和常量|define|const(C++)

变量和常量

变量的创建

类型是⽤来创建变量的。
把经常变化的值称为变量,不变的值称为常量。
变量创建的语法形式是这样的:

data_type name;  
    |       |  
    |       |  
 数据类型  变量名
int age;       // 整型变量  
char ch;       // 字符变量  
double weight; // 浮点型变量

变量的命名规则遵循以下原则:

  • 变量名只能由字⺟、数字和下划线组成,且必须以字⺟或下划线开头。
  • 变量名不能以纯数字开头,也不能包含特殊字符,如空格、连字符等。
  • 变量名不能使⽤语⾔的关键字,如int、char、if等。
  • 变量名应具有意义,有助于理解变量的含义和⽤途。
  • 变量名应简短明了,避免使⽤过⻓的名称。
  • 变量名应区分⼤⼩写,例如myVariable和myvariable被视为两个不同的变量。
变量初始化

变量在创建的时候就给⼀个初始值,就叫初始化。

int age = 18;  
char ch = 'w';  
double weight = 48.0;  
unsigned int height = 100;
变量的分类
  • 全局变量:在⼤括号外部定义的变量就是全局变量
    全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的
  • 局部变量:在⼤括号内部定义的变量就是局部变量
    局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的
#include <iostream>  
using namespace std;  

int global = 2023;     // 全局变量 

int main()  
{  
	int local = 2018;  // 局部变量  
	
	cout << local << endl;  
	cout << global << endl;  
	
	return 0;  
}
#include <iostream>  
using namespace std;

int n = 1000;  

int main()  
{  
	int n = 10;  
	cout << n << endl; //打印的结果是多少呢?
	
	return 0;  
}

当局部变量和全局变量都可以使用的时候,全局变量和局部变量名字还相同的情况下,局部变量优先使用
如不就想使用全局变量不想使用局部变量,就在变量前面加两个冒号

#include <iostream>  
using namespace std;

int n = 1000;  

int main()  
{  
	int n = 10;  
	cout << ::n << endl;
	
	return 0;  
}

取决于不同的编译器,全局变量和局部变量在初始化上主要有以下区别:

  • 全局变量:全局变量通常在定义时就被初始化,如果没有明确指定初始值,它们通常会被初始化为0。
  • 局部变量:局部变量通常不会⾃动初始化。它们需要在使⽤之前明确地赋值或初始化。如果没有初始化,它们的值将是未定义的,使⽤未初始化的局部变量可能会导致不可预测的⾏为或运⾏时错误,因此局部变量建议初始化。
    VS2022中,局部变量如果不初始化,直接就报错,不让使用,更加严格严谨

如果⼀个题⽬既可以使⽤全局变量,⼜可以使⽤局部变量,那怎么选择呢?
如果是在竞赛中:
能使⽤全局变量,⼀般会直接是全局变量,这样的好处是:

  1. 变量不需要初始化,因为默认会初始化为0,这样写会⽐较快
  2. 很多时候,会避免传参,因为全局变量到处都可以使⽤。
    所以在在竞赛中其实哪种⽅便就使⽤哪种,全局变量的使⽤很常⻅。

常量

常量就是不能被改变的值,通常我们会使⽤三种常量:

  • 字⾯常量
  • #define 定义的常量
  • const 定义的常量
字⾯常量

整型常量: 100,-5,0,0x123 整型常量⼀般可以写成10进制、8进制、16进制。
10进制数字,如: 6、17、22、123
8进制数字,⼀般是数字0开头的,⽐如: 012 , 016
16进制数字,⼀般是0x开头的数字,⽐如: 0x123 , 0xFF
字符常量: ‘a’
浮点型常量: 3.14 , 1E6 (科学计数法的形式)

#define定义常量
#define 常量名 内容
#include <iostream>  
using namespace std;  

#define M 100  
#define CH 'x'  
#define PI 3.14159  

int main()  
{  
	cout << M << endl;  
	cout << CH << endl;  
	cout << PI << endl;  
	
	return 0;  
}

这⾥定义的M、CH、PAI都是常量,可以直接使⽤,但是不能被修改。
使⽤ #define定义常量的时候是不关注类型的,只关注常量的名字叫啥,常量的值是啥,编译在处理这种常量的时候就是直接替换,在出现常量名字的地⽅,通通替换成常量的内容。

#include <iostream>  
using namespace std;  

int main()  
{  
	cout << 100 << endl;  
	cout << 'x' << endl;  
	cout << 3.14159 << endl;  
	
	return 0;  
}
const定义常量

C++中还可以使⽤ const 来定义常量,这种常量会有具体的类型。⽐#define定义常量更加严谨。语法形式如下:

const 类型 常量名字 = 常量值;
#include <iostream>  
using namespace std;  

const double PI = 3.14159;  

int main()  
{  
	int r = 0;
	  
	cin >> r; 	
	cout << "周⻓:" << 2 * PI * r << endl;  
	cout << "⾯经:" << PI * r * r << endl;  
	//PI = 3.14;//这种写法是错误的,常量不能被修改  
	
	return 0;  
}

这种常量的名字⼀般会写成⼤写,⽽普通变量的名字不会全⼤写,这样就可以做⼀个区分。
使⽤ const 定义的常量的好处:

  1. 增加了程序的可读性, PI ⽐ 3.14159 更加容易理解和书写、使⽤。
  2. 增加了程序的可维护性,如果改变常量的值,只要在定义的部分修改,使⽤的地⽅也就随之改变了,做到了"⼀改全改"的效果。
  3. 常量是不能修改的,当然 const 定义的常量⾃然也不能修改。
    在这里插入图片描述

需要常量的地⽅,经常使⽤ const 定义常量

练习

牛牛买电影票_牛客题霸_牛客网
#include <iostream>
using namespace std;

int main()
{
    int x = 0;

    cin >> x;
    cout << 100 * x << endl;
  
    return 0;
}

// 换成全局变量也是可以的  
#include <iostream>  
using namespace std;  

int a;  

int main()  
{  
	cin >> a;  
	cout << a * 100 << endl;  
	
	return 0;  
}
B2007 A + B 问题 - 洛谷
#include <iostream>
using namespace std;

int main()
{
    int a, b;
    
    cin >> a >> b;
    cout << a + b << endl;

    return 0;
}

//换成全局变量也是可以的  
#include <iostream>  
using namespace std;

int a,b;  

int main()  
{  
	cin >> a >> b;  
	cout << a + b << endl;
	  
	return 0;
}

题⽬描述中的【保证A,B及结果均在32位整型范围内,保证结果在32位整型范围内】就是计算的结果使⽤ int 类型是可以存储的。

B2614 【深基1.习6】鸡兔共笼 - 洛谷
#include <iostream>
using namespace std;

int main()
{
    int t = 0;
    int j = 0;
    int h = 35;
    int f = 94;
    
    j = (h * 4 - f) / 2;
    t = h - j;

    cout << t << ' ' << j << endl;

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值