首页 > 编程语言 >C++ 数据类型

C++ 数据类型

时间:2023-10-24 20:47:06浏览次数:28  
标签:typedef int 数据类型 unsigned long C++ define

C++ 数据类型

目录

基本的内置类型

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

编号 类型 关键字
布尔型 bool
字符型 char
整型 int
单精度浮点型 float
双精度浮点型 double
无类型 void
宽字符型 wchar_t

类型修饰符

C++ 数据类型修饰符包括signedunsignedlongshort。修饰符 signedunsignedlongshort 可应用于整型, signedunsigned 可应用于字符型, long 可应用于双精度型。修饰符 signedunsigned 也可以作为 longshort 修饰符的前缀。

可以修饰 int   double  char
#include <iostream>
using namespace std;
int main()
{
   short int i;           // 有符号短整数
   short unsigned int j;  // 无符号短整数
   unsigned long int k;
   j = 50000;
   i = j;
   k=j;
   cout << i << " " << j << " " << k;
   return 0;
}

基本数据类型

类型 说明 范围
char 字符类型 1 个字节 -128 到 127 或者 0 到 255
unsigned char 无符号字符 1 个字节 0 到 255
signed char 有符号字符 1 个字节 -128 到 127
int 整型 4 个字节 -2147483648 到 2147483647
unsigned int 无符号整型 4 个字节 0 到 4294967295
signed int 有符号整型 4 个字节 -2147483648 到 2147483647
short int 短整型 2 个字节 -32768 到 32767
unsigned short int 无符号短整型 2 个字节 0 到 65,535
signed short int 有符号短整型 2 个字节 -32768 到 32767
long int 长整型 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int 有符号长整型 8 个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
long long int 长长整形 8个字节
#include <iostream>
using namespace std;

int main(){   
   cout << "Size of char : " << sizeof(char) << endl;   
   cout << "Size of int : " << sizeof(int) << endl;  
   cout << "Size of short int : " << sizeof(short int) << endl;  
   cout << "Size of long int : " << sizeof(long int) << endl;   
   cout << "Size of float : " << sizeof(float) << endl;   
   cout << "Size of double : " << sizeof(double) << endl;  
   cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;   
    return 0;
}
Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 8
Size of float : 4
Size of double : 8
Size of wchar_t : 4
#include <iostream>
#include <limits>

using namespace std;

int main(){
    cout << "type:char\n";
    cout << "bytes = " << sizeof(char) << "\n\n";

    cout << "type:short\n";
    cout << "bytes = " << sizeof(short) << "\n";
    cout << "smallest value = " << numeric_limits<short>::min() << "\n";
    cout << "largest value = " << numeric_limits<short>::max() << "\n\n";

    cout << "type:int\n";
    cout << "bytes = " << sizeof(int) << "\n";
    cout << "smallest value = " << numeric_limits<int>::min() << "\n";
    cout << "largest value = " << numeric_limits<int>::max() << "\n\n";    

    cout << "type:long";
    cout << "bytes = " << sizeof(long) << "\n";
    cout << "smallest value = " << numeric_limits<long>::min() << "\n";
    cout << "largest value = " << numeric_limits<long>::max() << endl;
    return 0;
}
type:char
bytes = 1

type:short
bytes = 2
smallest value = -32768
largest value = 32767

type:int
bytes = 4
smallest value = -2147483648
largest value = 2147483647

type:longbytes = 8
smallest value = -9223372036854775808
largest value = 9223372036854775807

除了上面的这些基本数据类型,其中整型可以划分为带符号的(signed)和无符号的(unsigned)两种

short、int、long、long long表示有符号的

无符号(unsigned)由于没有负数,所以取值范围和带符号(signed)的也不同:

unsigned short :0~2^16 - 1

unsigned int :0~2^32 - 1

unsigned long :0~2^64 -1

void 类型和指针型(*)

void 类型其实是一种用于语法性的类型,而不是数据类型,

主要用于作为函数的参数或返回值,或者定义 void 指针,表示一种未知类型。无值型字节长度为0, 主要有两个用途:

1)明确地表示一个函数不返回任何值;

2)可以产生一个同一类型指针(可根据需要动态分配给其内存)。

#include <stdio.h>
int main()
{
    void *ptr = NULL; //void 指针
    void *buffer; /*buffer被定义为无值型指针*/
    int *p  = NULL;// 整型指针
    char *cp = NULL;//字符指针
    float *fp = NULL;//浮点指针
    return 0;
}

typedef声明

typedef是用来为复杂的声明定义简单的别名。下面是使用 typedef 定义一个新类型的语法:

本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中

typedef type newname;

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

typedef int feet;

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

feet distance;
#include <iostream>
#include <string.h>

using namespace std;
typedef struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} Book;
int main( )
{
   Book book;
   strcpy( book.title, "C++");
   strcpy( book.author, "microsoft"); 
   strcpy( book.subject, "computer");
   book.book_id = 1;
   cout << "title : " << book.title << endl;
   cout << "author : " << book.author << endl;
   cout << "subject : " << book.subject << endl;
   cout << "book_id : " << book.book_id << endl;
   return 0;
}

// title : C++
// author : microsoft
// subject : computer
// book_id : 1

定义常量

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

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

下面是使用 #define 预处理器定义常量的形式:

#define identifier value

#define预处理器

#include <iostream>
using namespace std;

#define LENGTH 10   
#define WIDTH  5
#define NEWLINE "end"

int main(){

   int area;  
   area = LENGTH * WIDTH;
   cout << area << endl;
   cout << NEWLINE;
   return 0;
   }

typedef和#define区别

typedef定义一种类型的别名,而不是简单的宏替换。

1)typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如可以定义 1One

2)typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。

参考资料

https://www.cjavapy.com/article/1786/

标签:typedef,int,数据类型,unsigned,long,C++,define
From: https://www.cnblogs.com/tian777/p/17785701.html

相关文章

  • vscode C++相关配置
    vscodeC++相关配置目录vscodeC++相关配置安装vscode下载C++编译环境安装编译器环境配置验证配置vscode配置文件launch.json配置tasks.json配置安装vscode官网地址:https://code.visualstudio.com/?wt.mc_id=DX_841432下载C++编译环境C/C++的编译器有很多种,大家可自行选择,这......
  • C++数组
    c++数组目录c++数组一维数组声明和初始化访问数组中元素修改数组数据遍历数组多维数组定义和初始化嵌套循环遍历指针数组动态数组参考资料数组是用来存储相同类型的变量的顺序集合。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。......
  • C++ char String
    C++charstring目录C++charstring字符char字符数组遍历基本函数字符比较char*、char[]转换为string字符串String类1.声明和初始化2.string的大小和容量3.拼接append()&+操作符4.插入push_back()&insert()5.string字符串遍历6.string删除erase()7.string查找与替换7.排序字......
  • C++指针基础
    指针基础目录指针基础引用定义和访问案例内存空间空指针和野指针const修饰指针指针之间的赋值通过指针改变原数据值指针和数组案例1案例2说明指针和函数动态内存指针潜在危险产生的原因:危害规避参考资料引用引用变量是对现有变量的引用,它是使用&运算符创建的:stringfood="......
  • 【每天例题】蓝桥杯 c++ 卡片
    卡片题目小蓝有k种卡片,—个班有n位同学,小蓝给每位同学发了两张卡片,—位同学的两张卡片可能是同一种,也可能是不同种,两张卡片没有顺序。没有两位同学的卡片都是一样的。小蓝有k种卡片,-个班有n位同学,小蓝给每位同学发了两张卡片,-位同学的两张卡片可能是同一种,也可能是不同种,......
  • Python数据类型
     数据类型有数值型,布尔型和字符串型一、数值型包括int(整型)、float(浮点型)和complex(复数型)等。1.整型Python3.x支持任意大小的整型数。整型数可以表示成十进制、八进制、十六进制和二进制形式。十进制整型常量:数码为0~9,如-135、57232。八进制整型常量:必须以80或8o开头(第1......
  • 【每日例题】蓝桥杯 c++ 奇数倍数
    奇数倍数题目本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。请你找到最小的整数X同时满足:1.X是2019的整倍数;2.X的每—位数字都是奇数。运行限制·最大运行时间:1s·最大运行内存:128M蓝桥杯奇数倍数题目分析针对这个题目,要判断两个条件:1.这个数......
  • C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例
    相关源码测试用例下载包括4个压缩包,初始代码,实现前缀和,实现前缀积,实现前缀异或。都是在前者的基础上修改的。原理长度为n的数组nums,共有n+1个以nums[0]开始的子数组。索引范围分别为[0,i),i取值区间[0,n]。preSum[i]记录子数组[0,i)的和。比如:nums={1,2,3,4},则preSum={0,1,3,6......
  • C++前缀和算法应用:和至少为 K 的最短子数组的原理、源码及测试用例
    题目给你一个整数数组nums和一个整数k,找出nums中和至少为k的最短非空子数组,并返回该子数组的长度。如果不存在这样的子数组,返回-1。子数组是数组中连续的一部分。示例1:输入:nums=[1],k=1输出:1示例2:输入:nums=[1,2],k=4输出:-1示例3:输入:nums=......
  • C++前缀和算法:构造乘积矩阵
    题目给你一个下标从0开始、大小为n*m的二维整数矩阵grid,定义一个下标从0开始、大小为n*m的的二维矩阵p。如果满足以下条件,则称p为grid的乘积矩阵:对于每个元素p[i][j],它的值等于除了grid[i][j]外所有元素的乘积。乘积对12345取余数。返回grid的乘积......