C++中的基本变量类型介绍

技术交流QQ群:1027579432,欢迎你的加入!

1.cpp变量类型

  • 变量实际上是存储空间的名称,cpp中每个变量都有指定的类型,类型决定变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可以作用在变量上。
  • 变量名可以是字母 数字 下划线组成,必须以字母或下划线开头。区分大小写
  • 几种基本的变量类型:


    基本的变量类型.png

2.cpp中的变量定义

  • 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量的定义指定一个数据类型,并包含该类型的一个或多个变量的列表,例如:
    格式:type variable_list;
    
  • type必须是基本数据类型或用户自定义的数据类型(如 类),variable_list可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔,例如:
    int i, j, k;  // 声明并定义了变量i, j, k,指示编译器创建类型为int的名为i,j,k的变量 
    char c, d, e;
    float f, ss;
    double d;
    
  • 变量可以在声明的时候被初始化,初始化器由一个等号后跟一个常量表达式组成,例如:
    格式:  type variable_name = value;
    extern int d = 3, f = 6;  // d 和 f 的声明
    int d = 3, f = 5;  // 定义并初始化 d 和 f
    byte z = 22;
    char x = 'x';
    
  • 不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的

3.cpp中的变量声明

  • 变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
  • 当使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。可以使用extern关键字在任何地方声明一个变量。虽然可以在C++程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
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;
}
  • 同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。
// 变量的声明
extern int a, b;
extern int c;
extern float f;

// 函数声明
int func();



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;

    // 函数调用
    int i = func();
    return 0;
}

// 函数定义
int func(){
    return 0;
}

4.cpp中的左值和右值

  • cpp中的两种类型的表达式:
    • 左值:指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
    • 右值:存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
  • 变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。
int g = 20;
10 = 20;  报错!

5.变量的类型转换

  • 变量的类型间是可以互相转换的,转换又分为自动转换和强制转换。
    • 自动转换规则
      • 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
      • 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int型转成long型后再进行运算。
        • a、若两种类型的字节数不同,转换成字节数高的类型
        • b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型
      • 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
      • char型和short型参与运算时,必须先转换成int型。
      • 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度:
          int aa = 1;
          double bb = 2.1;
          aa = bb;
          cout << "aa = " << aa << endl;  //输出为 2,丢失小数部分
      
          int a = 1;
          double b = 2.1;
          cout << "a + b = " << a + b << endl;  //输出为a + b = 3.1
      
    • 强制转换规则
      • 强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)表达式其功能是把表达式的运算结果强制转换成类型说明符所表示的类型
          int a = 1;
          double b = 2.1;
          cout << "a + b = " << a + (int)b << endl;  //输出为a + b = 3
      

6.变量定义与声明的区别

  • 定义包含了声明,但是声明不包含定义,变量声明是不会为变量开辟内存空间的,当初始化时,初始化必须有存储空间来进行,此时开始分配内存。如:
        int a = 0;     //定义并声明了变量 a
        extern int a;  //只是声明了有一个变量 a 存在,具体 a 在哪定义的,需要编译器编译的时候去找。
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351