const char*类型的值不能用于初始化_c++ 3、语法 数据类型

C++ 数据类型

c++的数据类型和c的数据类型基本保持一致。

const char*类型的值不能用于初始化_c++ 3、语法 数据类型_第1张图片

类型名 字节长 取值范围
bool 1 flase,true
char 1 -128~127
signed char 1 -128~127
unsigned char 1 0~255
short(signed short) 2 -32768~32767
unsigned short 2 0~65535
int(signed int) 4 -2147483648~2147483647
unsigned int 4 0~4294967295
long(signed long) 4 -2147483648~2147483647-
unsigned long 4 0~4294967295
float 4 3.410-38~3.41038
double 8 1.710-308~1.710308
long double 8 1.710-308~1.710308

    整型数据类型大小排序: bool , char , signed char,  unsigned char, short , unsigned short , int , unsigned int ,long , unsigned long , long long , unsigned long long

    浮点数排序大小:float , double , long double

    其中还有一个宽字符型 ,它是由下面方式来表示。

typedef short int wchar_t;

    从表中可以看到,c++的基本数据类型有bool,char,int,float,double等类型。除了bool类型外,可以主要分为两大类:整数和浮点数。因为char型从本质上也可以认为是整形,长度为1,存放字符的ASCII码。其中关键词unsigned 、signed、short、long,被称为修饰符。

    其中用short修饰int时,short int表示短整型,占2个字节。此时int可以省略,而long int表示长整型,占4个字节,也可以省略int。

    c++标准并没有明确规定每种数据类型的字节数与取值范围。不同的编译器对此会有不同的实现。面向32位的处理器通常将int和long两种数据类型用4字节表示,但一些面向64位的处理器,int用4字节表示,long用8个字节表示。因此,(unsigned)int 和unsigned long虽然在表中具有相同的取值范围,但仍然是两种不同的类型。一般情况下,如果对一个整数所占字节数和取值范围没有特殊要求,使用(unsigned)int 型为宜,因为他具有最高的处理效率。

1、typedef 类型

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

typedef type name

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

typedef int guojia;

    而通过下面的声明是完全合法的,它创建了一个整型变量 aaa:

guojia aaa

2、枚举类型

    枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。

    创建枚举,需要使用关键字 enum。枚举类型的一般形式为:

enum 枚举名{      标识符[=整型常数],      标识符[=整型常数], ...     标识符[=整型常数]} 枚举变量;

    如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。

    例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。

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

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

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

    在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。

3、常量

    常量是指在程序运行的整个过程中其值始终不可改变的量,也就是直接使用符号表示的量。其中又可分为整型常量、实型常量、字符常量、字符串常量、布尔常量。需要注意的是实型常量,其中的指数形式可以为.123E-1,12.e2,1.e-3,但不能写成e-3这种格式(e不区分大小写,且e后面的数必须为整数)

double guojia = 12.3f

4、变量

    声明一个变量只是将变量名标识符的有关信息告述编译器,是编译器认识该标识符,但是声明并不一定引起内存的分配。而定义一个变量意味着给变量分配内存空间,用于存放对应类型的数据,变量名就是对相应内存单元的命名。在c++中,大多数情况下,变量声明也就是变量定义,只有声明外部变量时例外。

auto存储类型:采用堆栈方式分配内存空间,属于暂时性存储,其内存空间可以多次覆盖使用。

egister存储类型:存放在通用寄存器中。

extern存储类型:在所有函数和程序段中都可以引用。

static存储类型:在内存中是以固定地址存放中的,在整个程序运行起间都有效。

    使用const关键字来创建符号常量,常量被创建后其值就固定了,编译器将不允许修改该常量的值。

const int a = 20;

    注意,应在声明时对const进行初始化,如果在声明常量时没有提供值,则该常量的值将是不确定的,且无法修改。

5、运算符

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++ 内置了丰富的运算符,并提供了以下类型的运算符:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 杂项运算符
名字 从上到下优先级
后缀 () [] -> . ++ - - 从左到右
一元 + - ! ~ ++ - - (type)* & sizeof 从右到左
乘除 * / % 从左到右
加减 + - 从左到右
移位 << >> 从左到右
关系 < <= > >= 从左到右
相等 == != 从左到右
位与 AND & 从左到右
位异或 XOR ^ 从左到右
位或 OR | 从左到右
逻辑与 AND && 从左到右
逻辑或 OR || 从左到右
条件 ?: 从右到左
赋值 = += -= *= /= %=>>= <<= &= ^= |= 从右到左
逗号 , 从左到右

数据类型转换

一、在c++中的数据类型转换一般有以下几种情况:

    1、将一种算术类型的值赋给另一种算术类型的变量时,c++将对值进行转换

    2、表达式中包含不同的类型时,c++将对值进行转换

    3、将参数传递给函数时,c++将对值进行转换

二、在进行数据类型转换的时候要注意几点:
 

1、将小的数据类型转化为大的数据类型,不会出现问题,一般只是转化后所占用的字节更多了,但是要将大的数据类型转化为小的数据类型的话,就会造成数据的丢失。

2、将较大的浮点数转化为较小的浮点数,如double转化为float ,这会造成精度(有效数位)降低,值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的。

3、将浮点类型转换为整型,这会造成小数部分丢失,原来的值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的。

4、当运算涉及到两种数据类型时,一般是较小的类型将被转换为较大的类型。

三、强制类型转换:
  • a、(typeName) value (C语言的写法)

  • b、value (typeName) (c++的写法)

  • c、static_cast<> 可以将值从一种数值类型转换为另外一种数据类型,格式为: static_cast (value)

#include int main(){    using namespace std;    int auks ,bats , coots;    auks=11.99+12.99;    bats=(int)12.99+(int)13.99;    coots=int(12.99)+int(11.99);    cout<<"auks="<< auks <<",bats = "<< bats;    cout<<",coots = "(ch)<

const char*类型的值不能用于初始化_c++ 3、语法 数据类型_第2张图片

往期回顾

01

|C++语法1、类与对象

02

|c++语法2、c执行-命名空间-输入输出



const char*类型的值不能用于初始化_c++ 3、语法 数据类型_第3张图片

图 | 郭嘉

文 | 郭嘉

const char*类型的值不能用于初始化_c++ 3、语法 数据类型_第4张图片

扫码关注桔梗与少年

微信号 : if-u-remembers

新浪微博:桔梗与少年

你可能感兴趣的:(const,typedef,定义数组类型,含枚举类型的函数声明,整形占字节数为基本数据类型,表示int数据类型的数据范围)