当前位置: 首页 > news >正文

C++变量类型

目录

一、c++中的变量定义

二、c++中的变量声明

三、c++中的左值和右值


一、c++中的变量定义

变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。

变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:

type variable_list;

在这里,type 必须是一个有效的 C++ 数据类型,可以是 char、wchar_t、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

行 int i, j, k; 声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。

变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,如下所示:

type variable_name = value;

下面列举几个实例:

extern int d = 3, f = 5;    // d 和 f 的声明 
int d = 3, f = 5;           // 定义并初始化 d 和 f
byte z = 22;                // 定义并初始化 z
char x = 'x';               // 变量 x 的值为 'x'

不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

二、c++中的变量声明

变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。

当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。

尝试下面的实例,其中,变量在头部就已经被声明,但它们是在主函数内被定义和初始化的:

#include <iostream>
using namespace std;// 变量声明
extern int a, b;
extern int c;
extern float f;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;
}

当上面的代码被编译和执行时,它会产生下列结果:

30
23.3333

同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。例如:

// 函数声明
int func();int main()
{// 函数调用int i = func();
}// 函数定义
int func()
{return 0;
}

三、c++中的左值和右值

C++ 中有两种类型的表达式:

  • 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
  • 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。

变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

int g = 20;

 但是下面这个就不是一个有效的语句,会生成编译时错误:

10 = 20;

http://www.lryc.cn/news/7450.html

相关文章:

  • win10 安装 vs2015(社区版本)以及opencv-4.5.5
  • 867. 转置矩阵
  • Datawahle组队学习——妙趣横生大数据 Day1
  • 网友眼中越老越吃香的行业,果然是风向变了!
  • 为什么时间序列预测这么难?本文将给你答案
  • STC15系列单片机通过串口多字节数据读写EEPROM操作
  • 计算机网络-ip数据报
  • 从零开始学C
  • 【云原生】手把手带你从零开始搭建kubernetes最新版本实战
  • trivy os软件包扫描原理分析
  • 算法训练营 day48 动态规划 完全背包 零钱兑换 II 组合总和 Ⅳ
  • Java 基础(1)—泛型简单使用
  • 内存卡损坏了怎么恢复?
  • Mysql使用规范(纯技术和实战建议)
  • Netty源码解读-EventLoop(二)
  • OSI模型详解
  • Share Creators完成500万美元融资,以工具化手段帮助企业从数字资产管理中解放
  • 几个Base64编码工具,也有蹊跷
  • Python|每日一练|排序|递归|字符串|数组|动态规划|单选记录:以特殊格式处理连续增加的数字|正则表达式匹配|地下城游戏
  • Spring Cloud微服务网关Gateway组件
  • cluster nodes(集群节点)
  • 【Android学习】下载jar慢和gradle慢的情况
  • 下一个排列-力扣31-java
  • 前端面试题
  • jsp游戏门户网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • Git与IDEA强强联合(HTTPS协议连接)
  • leetcode 第二题:两数相加-C语言实现
  • 【人工智能】PTP网络时钟服务器在智能驾驶里的重要性
  • 【蓝桥杯集训3】二分专题(3 / 5)
  • 在成都的哪个培训机构学习Java好呢?