iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c++primer:变量和基本类型详解
  • 590
分享到

c++primer:变量和基本类型详解

2024-04-02 19:04:59 590人浏览 泡泡鱼
摘要

目录前言类型转换变量声明与定义的关系变量命名规范复合类型引用指针const限定符const的引用指针和constconstexpr和常量表达式auto类型说明符decltype头文件

前言

我只写我觉得重要的,同时把一些我觉得比较重要的习题做一下

类型转换

类型所能代表的范围决定了转换的过程

比如:当我们把一个非布尔类型的算数值赋给布尔类型时,初始值为0则代表结果为false,否则结果为true

当把浮点数赋给整数时,会舍去小数部分。

当赋给无符号整数的值大于它表示的范围时,结果是这个值对(无符号整数最大值+1)取模。

变量声明与定义的关系

变量声明规定了变量的类型和名字,在这一点上定义与之相同,但是除此之外,定义还申请存储空间,也可能为变量赋一个初始值。如果要声明一个变量而非定义它,则使用extern关键词,但是如果给extern修饰的变量初始化了,就抵消了extern的作用

变量命名规范

  • 标识符体现具体含义
  • 变量名一般用小写字母
  • 用户自定义的类名一般用大写字母开头,如Sales_item
  • 如果标识符由多个单词组成,则单词之间应该有明显区别,如student_loan或者studentLoan

复合类型

符合类型是基于基于其他类型定义的类型。

引用

引用为对象起了另一个名字,引用类型引用另一种类型通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名
引用不是对象,而是一个已经存在的对象的另一个别名

由于引用不是对象,所以不存在引用的引用

指针

指针本身就是个对象,允许对指针赋值和拷贝,指针无需在定义时赋初值,和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将有一个不确定的值。

指针的值(即地址)应该属于下列4种状态之一

  • 指向一个对象
  • 指向紧邻对象所占空间的下一个位置
  • 空指针
  • 无效指针(上述指针的其他情况)

*关于指向紧邻对象所占空间所占对象的下一个位置,说实话没太看懂,首先我在知乎查找了一下,然后又查看了一下英文版的c++ primer,发现其意思就是对象末尾的与其相邻的下一个位置,比如:
int t=5;int p=&t,则p+1就代表这个紧邻对象所占空间的下一个位置,但是这个对象没有定义,所以原则上是不能解引用的 

const限定符

默认情况下,const 对象仅在文件内有效

const的引用

可以把引用绑定到const对象上去,就像绑定到其他对象上去一样,称之为对常量的引用,对常量的引用不能用来用作修改其绑定的对象,比如:

有const int a=3,const int &b=a则&b=34,int &c=b这种行为是不允许的,因为&b=34会改变对象的值,而此时是常量,而int &c=b若可以的话则能通过&c=34来改变对象的值,这显然是不能允许的。

引用所引用的类型与其所引用对象的类型一致

指针和const

由于指针本身就是个对象,因此指针本身是不是常量以及指针指向的对象是不是常量就是两个独立的问题。用顶层const(top-level const)代表指针本身是个常量,而用名词底层const(low-level const)代表指针指向的对象是个常量

constexpr和常量表达式

常量表达式(const expression)代表值不会改变并且在编译过程中就能得到计算结果的表达式。

例子:

const int max_files=20 //是常量表达式

const limit =max_files+1//limit是常量表达式

int ret=20//不是常量表达式,因为其值会改变

const int sa=get_size()//不是常量表达式,因为其值需要到运行期间得到

常量表达式是由它的数据类型和初始值来决定的

c++11新规定允许将变量声明为constexpr类型以便由编译器来验证变量是否为常量表达式,声明为constexpr的变量一定是一个常量,而且必须由常量表达式初始化 例:constexpr int sa=20

在constexpr限定符种如果定义了一个指针,限定符constexpr仅对指针有效,对指针指向的对象无关

auto类型说明符

其作用是让编译器去分析表达式的类型,例:auto a=a1+a2,编译器会自动将a的类型转换成a1+a2结果的类型。

decltype

其作用是得出表达式的类型 例:decltype(f()) sum=y,sum的类型就是f()返回值的类型

如果表达式的类型是解引用操作,则decltype将得到引用类型,因为解引用操作能给得到指针所指向的对象,并且能改变对象的值,所以是引用

如果decltype使用一个不加括号的变量则得到的结果是该变量的类型,如果使用一个加括号的变量,则得到的结果是引用类型,因为加了括号就代表这个变量是一个表达式,而变量是作为左值的特殊表达式,所以是引用

头文件保护符

#ifdef 当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真,一旦检查得到为真则一直运行直到遇到#endif为止

习题

练习读程序写结果

unsigned int u=10,u2=42;

std::cout<<u2-u<<std::endl;//32

std::cout<<u-u2<<std::endl;//4294967264,

其结果逻辑上是-32但是超出了其范围0-4294967295需要对4294967296取模得到4294967264

练习

下列那些初始化是正确的

  • int i=-1,&r=0;//错误,0为字面值常量,需要常量引用
  • int *const p2=&i2;//正确
  • const int i=-1,&r=0;//正确
  • const int *const p3=&i2;//正确
  • const int *p1=&i2;//正确
  • const int &const r2;//错误,因为引用不是对象,不能用const修饰
  • const int i2=i,&r=i;//正确

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: c++primer:变量和基本类型详解

本文链接: https://www.lsjlt.com/news/134100.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c++primer:变量和基本类型详解
    目录前言类型转换变量声明与定义的关系变量命名规范复合类型引用指针const限定符const的引用指针和constconstexpr和常量表达式auto类型说明符decltype头文件...
    99+
    2022-11-12
  • C++ Primer的变量和基本类型详解
    目录1.类型转换含有无符号类型的表达式2.字面值常量整形和浮点型字面值字符和字符串字面值转移序列指定字面值的类型布尔字面值和指针字面值总结1.类型转换 对象的类型定义了对象能包含的数...
    99+
    2022-11-12
  • C++变量和基本类型详解
    目录基本内置类型1. 不同平台下基本类型的字节数2. 算数类型的最小尺寸3. 数据类型选择的经验准则4. 有符号类型和无符号类型5.初始化与赋值6. 声明与定义7. C++关键字8....
    99+
    2022-11-12
  • ES6变量赋值和基本数据类型详解
    目录let和constlet和const不存在变量提升暂时性死区(temporal dead zone,简称TDZ)不允许重复声明块级作用域与函数声明const变量解构解构必须左右解...
    99+
    2022-11-13
  • c++的变量和基本类型都有哪些
    本篇文章为大家展示了c++的变量和基本类型都有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.类型转换对象的类型定义了对象能包含的数据和能参与的运算,其中一种运算被大多数类型支持,就是将对象从...
    99+
    2023-06-22
  • python变量和基本数据类型
    一、变量 1、声明变量: #!/usr/bin/env python# -*- coding: utf-8 -*- name = "tiger" 上述代码声明了一个变量,变量名为: name,变量name的值为:"tiger"变量的作用:其...
    99+
    2023-01-31
    变量 数据类型 python
  • c++中的基本IO类型详解
    引言 c++不直接处理输入和输出,而是通过标准库中的类型处理IO。IO的设备可以是文件、控制台、string。c++主要定义了三种IO类型,分别被包含在iostream、fstrea...
    99+
    2022-11-12
  • C# 变量,常量数据类型详情
    目录1、变量操作1.1 变量声明、赋值1.2 赋值运算符和赋值表达式1.4变量命名规则2 常量2.1 变量常量作用域2.2 @作用3 数据类型之值类型3.1数据类型3.2 理解内存原...
    99+
    2022-11-13
  • Python变量和数据类型详解
    Python变量和数据类型 Python中数据类型 Python之print语句 Python的注释 Python中什么是变量 Python中定义字符串 Python中raw字符串...
    99+
    2022-06-04
    变量 详解 数据类型
  • 条件语句/变量和基本数据类型
    Python条件语句和基本数据类型 可变不可变: 可变类型:列表 不可变类型:字符串\数字\元祖 访问顺序: 1.顺序访问:字符串\列表\元祖 2.映射:字典(字典查询速度比列表快,但占内存高于列表) 3.直接访问:数字 存放元素个数: ...
    99+
    2023-01-31
    变量 语句 数据类型
  • 详解C语言的基本数据类型
    目录1、C语言基本数据类型2、计算机中的单位3、各数据类型的大小及字取值大小总结1、C语言基本数据类型 2、计算机中的单位 3、各数据类型的大小及字取值大小 对于short i...
    99+
    2022-11-12
  • Java基本知识点之变量和数据类型
    Java中的变量和基本数据类型: 写完第一个java程序之后,我们对Java也有了初步的了解,现在我们再来继续认识一下Java中的基本知识点——变量和数据类型。 那么我们该怎样来认识...
    99+
    2022-11-12
  • Python 变量类型实例详解
    目录1.变量赋值2.多个变量赋值3.标准数据类型4.Python 数字5.Python字符串6.Python列表7.ython 元组8..Python 字典9.Python数据类型转...
    99+
    2022-11-13
  • php中变量有哪几种基本类型
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在PHP 中,数据类型可以分为三大类,分别是标量数据类型、复合数据类型和特殊数据类型。其中标量数据类型是数据结构的最基础单元,是基本数据类型,只能存储一个数据。在 PH...
    99+
    2019-06-11
    php 变量 基本类型
  • php中变量的基本类型有哪些
    这篇文章主要介绍“php中变量的基本类型有哪些”,在日常操作中,相信很多人在php中变量的基本类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中变量的基本类型有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-25
  • TypeScript基本类型之typeof和keyof详解
    目录编译并运行 TS 代码TypeScript基础数组类型   []联合类型  |类型别名函数类型 void类型可选参数 参数默认值=&nbs...
    99+
    2023-05-14
    ts中的typeof ts基本类型typeof ts基本类型keyof
  • Python基础语法之变量与数据类型详解
    目录一. 输出函数print1.1 可以输出数字1.2 可以输出字符串1.3 可以输出表达式1.4 可以输出至文件中二. 变量与数据类型2.1 整型2.2 浮点型2.3 字符串型2....
    99+
    2022-11-11
  • C语言的变量类型及内存大小详解
    类型 存储大小 值范围 c输入输出格式 ...
    99+
    2022-11-12
  • C#类型和C#变量的示例分析
    这篇文章主要介绍C#类型和C#变量的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C#类型有两种:值类型(value type)和引用类型(reference type)。值类型变量直接包括它们的数据,而引用...
    99+
    2023-06-17
  • Kotlin基本数据类型详解
    目录1. kotlin 数值型2. kotlin 布尔型3. kotlin 字符型4. kotlin 字符串5. kotlin 可空类型6. kotlin 类型相互转换7. kotl...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作