类型与定义

类型拓展

c++程序中的每一个类型都是要占用空间的,在OJ中,一旦空间超限,就不好了。因此,我们要知道每一个类型占用多少字节,存储值最多是多少,最少是多少。存储单位是字节(Byte
注意有的类型在不同系统使用的字节不同,系统分为32位系统32-Bit)和64位系统64-Bit

类型

整型 int //4-Byte (-(2^32)-1~2^32-1)
短整型 short //2-Byte (-(2^16)-1~2^16-1)
长整型 long //32-Bit: 4-Byte 64-Bit: 8-Byte (-(2^32)-1~2^32-1)
双长整型 long long //32-Bit: 4-Byte 64-Bit: 8-Byte (-(2^64)-1~2^64-1)
浮点型 float //4-Byte
长浮点型 double //8-Byte
双长浮点型 long double //16-Byte
字符型 char //1-Byte
宽字符型 wchar_t //2-Byte
布尔型 bool //1-Byte
无符号整型 unsigned //4-Byte (0~(2^32)×2)
有符号整型 signed //4-Byte (和int类型一样)

wchar_t类型可以存储中文汉字、日语汉字、韩文汉字等特殊字符
bool类型可以直接理解为if后填的判断,它是用来存储条件结果的类型,只有false(0)true(1)两个值

类型修饰关键字

  1. unsigned:一般放在int, long, long long, shortchar前面,表示这个类型没有负数区域,正数区域是原来的两倍。加了这个修饰符后字节不变。另外后面不填默认为unsigned int
  2. signed:放在int, long, long long, shortchar前面没有一点用处,可以代替int使用,例如signed main()。另外后面不填默认为signed int
  3. const:可以加在所有类型的前面,表示这是一个常量。常量是指一个永远不会变的值,因此加上它后,不能改变值,否则报错

宏定义

宏定义是一种在c语言的定义,可以替代代码设置常量,定义时需放在头文件之后

#define A B //表示用A替代B
#undef A //表示取消宏定义A

宏定义有什么广泛的用处呢?看以下示例

#include <iostream>
#define N 3
using namespace std; 
int main() {
	int a, b, c, d; 
	cin >> a >> b >> c >> d; 
	if(a%N==0) 
		cout << a << ' '; 
	if(b%N==0) 
		cout << b << ' '; 
	if(c%N==0) 
		cout << c << ' '; 
	if(d%N==0) 
		cout << d << ' '; 
	return 0; 
}

这个程序当输入四个数,随后输出能被3整除的数并用空格分开,这么一看还没有发现什么,但是假如我想直接在代码中改为能够被12345整除呢?这时就可以直接改变值了。又可能会输入20位的数呢?要用到long long类型,又容易写成int,怎么办呢?我们可以改变为以下代码

#include <iostream>
#define N 12345 //直接改变 
#define int long long //定义int为long long 
using namespace std; 
signed main() { //这里不能使用int main(),因为int成了宏定义,long long main()要报错 
	int a, b, c, d; //表面是int类型,实际是long long类型 
	cin >> a >> b >> c >> d; 
	if(a%N==0) //直接调用,更方便 
		cout << a << ' '; 
	if(b%N==0) 
		cout << b << ' '; 
	if(c%N==0) 
		cout << c << ' '; 
	if(d%N==0) 
		cout << d << ' '; 
	return 0; 
}

运用常量可以把第二行改变,注意改变后应放在宏定义之后,如下代码

#include <iostream>
#define int long long //定义int为long long 
const int N = 12345; //const定义 
using namespace std; 
signed main() { //这里不能使用int main(),因为int成了宏定义,long long main()要报错 
	int a, b, c, d; //表面是int类型,实际是long long类型 
	cin >> a >> b >> c >> d; 
	if(a%N==0) //直接调用,更方便 
		cout << a << ' '; 
	if(b%N==0) 
		cout << b << ' '; 
	if(c%N==0) 
		cout << c << ' '; 
	if(d%N==0) 
		cout << d << ' '; 
	return 0; 
}

点一个赞再走吧
点个赞吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值