初学C++——C++基础、变量、字面量、常量、数据类型、类型转换、变量命名规则、开发环境配置

文章目录

  • 简介
  • C ++语言的特性
  • C++ 开发环境配置
  • C++ 变量,字面量和常量
    • C++ 变量
      • 变量命名规则
    • C ++ 字面量
    • C ++ 常量
  • C++ 数据类型
    • C ++基本数据类型
    • 派生数据类型
  • C++ 类型转换
    • 隐式类型转换
    • C ++显式转换

简介

C ++是一种静态类型的,自由形式的(通常)编译的,多范例的,通用的基于C的中级编程语言。它是由Bjarne Stroustrup于1979年开发的

C ++语言的特性

  • 速度
    由于C ++是C的扩展版本,因此它的C部分非常底层。
    这极大地提高了Python和Java等高级语言无法提供的速度。

  • 静态类型
    由于C ++是一种静态类型的编程语言,因此它不允许编译器对数据类型进行假设。例如,10与“ 10”不同,必须明确声明。
    由于这些是在编译时确定的,因此有助于编译器在程序执行之前捕获错误和错误。

  • 多范式编程语言
    C ++支持至少7种不同的编程风格,并为开发人员提供了随意选择的自由。
    与Java不同,除非必要,否则不需要使用对象来解决所有任务。

  • 面向对象
    C ++支持面向对象的程序设计,该程序为程序提供了清晰的模块化结构。
    通过在C ++中使用它,可以通过创建对象将这些复杂的问题分成较小的集合。

  • 标准库(标准模板库-STL)
    可以使用C ++包含的标准库进一步扩展其使用。
    这些库包含有效的算法,可以在编写自己的项目时广泛使用这些算法。可以节省大量的编程工作

C++ 开发环境配置

C++ 开发环境配置

C++ 变量,字面量和常量

C++ 变量

变量是用于保存数据的容器(存储区)
为了表示存储区域,应该为每个变量赋予唯一的名称(标识符)。例如:

int num = 20;

在这里,num是int数据类型的变量,我们为其分配了一个整数值20

注:int数据类型表明变量只能容纳整数。同样,如果必须存储小数和指数,则可以使用double数据类型。

变量的值可以更改,因此名称为variable(变量)。

int num = 20;  //num 为 20
num = 50;	   //num 为 50

变量命名规则

  • 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。

  • 变量名不能以数字开头,第一个字母必须是字母或者下划线开头。。

  • 变量名区分大小写。

  • 变量名称不能是关键字,以免冲突。例如,int是用于表示整数的关键字。

  • 变量名可以以下划线开头。但是,这不是一个好习惯。

注意:我们应该尝试给变量起有意义的名字。例如,first_name是比fn变量名更好。

C ++ 字面量

字面量是用于表示固定值的数据。可以直接在代码中使用。例如:1,2.5,‘c’ 等。

这里,1、2.5和“c”是字面量,因为不能给这些项赋不同的值。

这是C ++编程中不同字面量的列表。

  1. 整数字面量
    整数是没有任何小数或指数部分的数字字面量(与数字关联)。C编程中有三种类型的整数字面量:
  • 十进制(以10为底)

  • 八进制(以8为底)

  • 十六进制(以16为底)

例如:

十进制数: 0, -9, 22 etc
八进制数: 021, 077, 033 etc
十六进位制数: 0x7f, 0x2a, 0x521 etc

在C ++编程中,八进制以0开头,十六进制以0x开头。

  1. 浮点字面量
    浮点字面量是具有分数形式或指数形式的数字字面量。例如:
  • -2.0

  • 0.0000234

  • -0.22E-5

注意: E-5 = 10⁻⁵

  1. 字符字面量
    通过将单个字符括在单引号内来创建字符字面量。例如:'a','m','F','2','}'等。

  2. 转义符
    有时,在C ++编程中必须使用不能键入或具有特殊含义的字符。例如,换行符(回车),制表符,问号等。

转义符描述
\b退格(BS)
\f换页(FF)
\n换行(LF)
\r回车(CR
\t水平制表(HT)
\v垂直制表(VT)
\反斜杠
单引号字符
"双引号字符
?问号字
\0空字符(NULL)
  1. 字符串字面量
    字符串字面量是用双引号引起来的一系列字符。例如:
“good”字符串常量
“”空字符串常量
" "空格的字符串常量
“x”具有单个字符的字符串常量
“Earth is round\n”用换行符打印字符串

C ++ 常量

在C ++中,我们可以创建其值无法更改的变量。为此,我们使用const关键字来定义一个常量

const int LIGHT_SPEED = 299792458;
LIGHT_SPEED = 2500 // 错误! LIGHT_SPEED 是一个常量

使用了关键字const来声明名为LIGHT_SPEED的常量。如果尝试更改的值LIGHT_SPEED,则会抛出错误消息

常量与字面量的主要区别在于,常量是一个变量,但它被定义为不可变。常量在定义时必须初始化,并且其值不能在之后更改。
字面量则是直接在代码中出现的数据值,不具备变量的特性,不能作为左值使用。

C++ 数据类型

C ++基本数据类型

类型关键字大小
布尔型bool1字节
字符型char1字节
整型int4字节
浮点型float4字节
双浮点型double8字节
无类型void0字节
宽字符型wchar_t2字节
  1. C ++ int (整型)
  • int关键字用来表示整数。
  • 大小通常为4个字节。意思是,它可以存储从-2147483648 到 214748647的值。
int num = 90000;
  1. C ++float和double(浮点和双浮点型)
  • float和double用于存储浮点数(小数和指数)。
  • float的大小是4字节,double的大小是8字节。因此,double的精度是float的两倍。
float num = 99.99;
double num1 = 123.32213;

这两种数据类型也用于指数

double distance = 45E12    // 45E12 等于 45*10^12
  1. C ++ char(字符型)
  • 关键字char用于字符。
  • 大小是1个字节。
  • C ++中的字符用单引号’ '引起来。
char test = 'h';

在C ++中,整数值存储在char变量中,而不是字符本身

在C++中,当你将一个整数值赋给一个char类型的变量时,实际上存储的是这个整数值的二进制表示,因为char类型通常是一个字节,可以存储一个8位的整数值。如果打印这个char变量,你会看到它显示的是这个整数值对应的ASCII字符,这是因为在大多数环境中,char被当作字符类型来处理

char myChar = 65; // 65是大写字母A的ASCII值

在这个例子中,myChar实际上包含的是整数65的二进制表示,但当你打印它时,你会看到A,因为ASCII码将这个二进制表示解释为字符A
如果你想要直接访问存储的整数值,而不是它的ASCII字符表示,你可以强制将其转换为整数类型:

int intValue = static_cast<int>(myChar);

现在intValue将包含65。这种行为是因为整数和字符变量在内存中的存储方式不同,字符变量实际上存储的是代表字符的数字,而不是字符本身

  1. C ++ wchar_t (宽字符型)
  • 宽字符wchar_t类似于char数据类型,不同之处在于它的大小是2个字节而不是1个字节。
  • 它用于表示比char单个字符需要更多内存来表示它们的字符。
wchar_t test = L'ם'  // 存储希伯来语字符

注意引号前的字母L。

注意:在C ++ 11中还引入了另外两个固定大小的字符类型char16_t和char32_t。

  1. C ++ bool (布尔型)
  • bool数据类型有两个可能的值:true或false。
  • 布尔用于条件语句和循环
bool answer = false;
  1. C ++ void(无类型)
  • void关键字表示不存在数据。这意味着“没有”或“没有值”。

  • 使用函数和指针时,会使用到void。

注意:我们不能声明void类型的变量

派生数据类型

从基本数据类型派生的数据类型是派生类型。例如:数组,指针,函数类型,结构等。

C++ 类型转换

C ++允许将一种类型的数据转换为另一种类型的数据。这称为类型转换

C ++中有两种类型的类型转换。

  1. 隐式转换
  2. 显式转换(也称为强制类型转换)

隐式类型转换

由编译器自动完成的类型转换称为隐式类型转换。这种类型的转换也称为自动转换
举例:

  1. 从int转换为double
// 隐式类型转换的工作方式#include <iostream>
using namespace std;int main() {// 为num_int分配一个int值int num_int = 9;// 声明一个double变量double num_double;// 隐式转换// 将int值分配给double变量num_double = num_int;cout << "num_int = " << num_int << endl;cout << "num_double = " << num_double << endl;return 0;
}

输出结果

num_int = 9
num_double = 9

在程序中,已经将int数据分配给double变量。

num_double = num_int;

此处,在将int值分配给num_double变量之前,它会由编译器自动转换为double。 这是隐式类型转换的示例。

  1. 自动从double转换为int
//隐式类型转换的工作方式#include <iostream>
using namespace std;int main() {int num_int;double num_double = 9.99;// 隐式转换// 将一个double值赋给一个int变量num_int = num_double;cout << "num_int = " << num_int << endl;cout << "num_double = " << num_double << endl;return 0;
}

输出结果
在这里插入图片描述

在程序中,我们已将double数据分配给int变量。

num_double = num_int;

在此,将double值分配给num_int变量之前,编译器会自动将其转换为int。 这也是隐式类型转换的示例。

注意:由于int不能有小数部分,因此在上面的示例中,小数点后的数字被截断了。

C ++显式转换

当用户手动将数据从一种类型更改为另一种类型时,这称为显式转换。这种类型的转换也称为强制类型转换。

可以使用三种主要方法在C ++中使用显式转换。他们是:

  1. C型类型强制转换(也称为强制转换符号)
  • C 风格转换
    顾名思义,这种类型的转换受到C编程语言的青睐。也称为强制转换表示法。
    语法是:
(data_type)expression;

比如

	//C风格转换//初始化int变量int num_int = 25;//声明double变量double num_double;//从int转换为doublenum_double =(double) num_int;
  1. 函数表示法(也称为老式c++风格的类型转换)
  • 函数样式转换
    我们还可以使用类似符号的函数将数据从一种类型转换为另一种类型。

这种类型的语法是:

data_type(expression);

比如

	//函数样式转换int num_int = 25;//声明double变量double num_double;//从int转换为doublenum_double = double(num_int);
  1. 类型转换运算符
//类型转换// 初始化double变量double num_double = 3.56;qDebug()<< "num_double = " << num_double ;// 从double到int的C风格转换int num_int1 = (int)num_double;qDebug() << "num_int1   = " << num_int1 ;// 从double到int的函数样式转换int num_int2 = int(num_double);qDebug() << "num_int2   = " << num_int2;

输出
在这里插入图片描述

使用C风格类型转换和函数样式转换进行类型转换,并显示结果。由于它们执行相同的任务,因此两者都给我们相同的输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3019617.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

一文详解Spring与JDK注入

目录 一、Spring框架 二、JDK 三、什么是Spring的注入 四、如何实现Spring与JDK注入 一、Spring框架 Spring框架是一个开源的Java EE应用程序框架&#xff0c;它为企业级Java应用程序提供了全面的基础设施支持。Spring框架的核心特点包括依赖注入&#xff08;Dependency I…

存储大作战:探索Local Storage与Session Storage的奥秘

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 存储大作战&#xff1a;探索Local Storage与Session Storage的奥秘 前言Local Storage与Session Storage简介数据存储生命周期容量限制安全性 前言 在Web的世界里&#xff0c;数据就像是一群流浪者&a…

如何利用AI提高内容生产效率

目录 一、自动化内容生成 二、内容分发与推广 三、内容分析与优化 图片来源网络&#xff0c;侵权联系可删 一、自动化内容生成 随着AI技术的飞速发展&#xff0c;自动化内容生成已经成为提高内容生产效率的重要手段。AI可以通过自然语言处理&#xff08;NLP&#xff09;、机…

vue2 14个指令详解,v-bind操作style,v-bind操作class,以及v-bind动态绑定图片地址不生效的问题

文章目录 vue常用指令内容渲染指令v-textv-html 条件渲染指令v-showv-ifv-else、v-else-iftemplate标签 事件绑定指令v-on事件处理函数传参事件处理函数的事件对象 属性绑定指令v-bind 双向绑定指令v-modelv-model的双向绑定实现原理用在表单元素上用在组件实现父子数据双向绑定…

游戏全自动打金搬砖,单号收益300+ 轻松日入1000+

详情介绍 游戏全自动打金搬砖&#xff0c;单号收益300左右&#xff0c;多开收益更多&#xff0c;轻松日入1000 可矩阵操作。 项目长期稳定&#xff0c;全自动挂机无需人工操作&#xff0c;小白&#xff0c;宝妈&#xff0c;想做副业的都可以。

MouseBoost PRO mac中文激活版:专业鼠标助手

MouseBoost PRO mac鼠标性能优化软件&#xff0c;以其强大的功能和智能化的操作&#xff0c;助您轻松驾驭鼠标&#xff0c;提高工作效率。 MouseBoost PRO支持自定义快捷键设置&#xff0c;让您轻松实现快速切换应用程序、打开特定文件、调节音量大小等操作。自动识别窗口功能则…

Java 8特性(一) 之 手写Stream流filter、map和forEach方法

Java 8特性&#xff08;一&#xff09; 之 手写Stream流filter、map和forEach方法 今天看了一下Java 8的Stream流&#xff0c;学习了一下函数式编程&#xff0c;这才感受函数式编程如此爽&#xff0c;之前就使用过ES8.7.1的函数式编程&#xff0c;当时就在想啥时候咱也能写出这…

手拿滑块撕瑞数 我叫超弟你记住!!什么腾讯滑块、数美、阿里通通拿下!最新版2024.5.8号

本文章非标题党&#xff0c;可提供主流验证码解决方案及成品、补环境框架、逆向教学 不论你是逆向小白、亦或是需求方都可通过本文章各取所需&#xff01;&#xff01; 废话不多说&#xff0c;老规矩&#xff0c;附上腾讯旗下验证码程序运行图&#xff0c;附程序运行时间 &…

XShell 无法连上 VirtualBox的系统问题排查

之前一直都是可以正常使用的&#xff0c;过了一段时间之后&#xff0c;我发现无法使用XShell连接我之前安装的Centos 系统了。 我在centos中ping windows的IP地址&#xff0c;是可以 ping 通的&#xff0c; 百度也可以 ping 通&#xff0c;但是在 windows 中 ping centos的IP地…

LINUX 入门 4

LINUX 入门 4 day6 7 20240429 20240504 耗时&#xff1a;240min 课程链接地址 第4章 LINUX环境编程——实现线程池 C基础 第3节 #define里面的行不能乱空行&#xff0c;要换行就打\ typedef 是 C 和 C 中的一个关键字&#xff0c;用于为已有的数据类型定义一个新的名字。…

国内验签的SSL证书!重要数据绝不出境

SSL证书作为保障网络数据传输安全的重要工具&#xff0c;其作用日益凸显。特别是在国内&#xff0c;随着网络安全法的实施与个人信息保护的加强&#xff0c;国内验证签发的SSL证书更是成为企业与个人在线业务不可或缺的一部分。本文将深入探讨国内验签SSL证书的技术原理、验证流…

【stomp 实战】spring websocket用户消息发送源码分析

这一节&#xff0c;我们学习用户消息是如何发送的。 消息的分类 spring websocket将消息分为两种&#xff0c;一种是给指定的用户发送&#xff08;用户消息&#xff09;&#xff0c;一种是广播消息&#xff0c;即给所有用户发送消息。那怎么区分这两种消息呢?那就是用前缀了…

U盘管控软件,禁止员工用U盘拷贝机密数据,防止信息通过U盘泄露

随着信息技术的不断发展&#xff0c;U盘等便携式存储设备已成为我们日常工作中不可或缺的工具。然而&#xff0c;随着U盘的普及&#xff0c;企业面临的信息泄露风险也在不断增加。为了确保企业的信息安全&#xff0c;许多企业开始采用U盘管控软件&#xff0c;禁止员工使用U盘拷…

内容自动化的进阶之路:Kompas.ai带你走进智能创作时代

在数字化媒体的浪潮中&#xff0c;内容创作和管理正变得越来越复杂和挑战性。为了应对这一挑战&#xff0c;内容自动化技术应运而生&#xff0c;它通过使用人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;算法&#xff0c;自动化内容创作的多个环节&a…

ubuntu安装mysql本地navicat连接使用

ubuntu安装mysql&#xff0c;选择在线安装非常快&#xff1a; 安装 sudo apt install -y mysql-server-8.0先下载资源&#xff08;指定版本下载&#xff09; 如果下不下来&#xff0c;遇到报错多半是 工具需要更新了 sudo apt update更新一下即可&#xff08;sudo就是权限更…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑&#xff0c;在token流重构完成后&#xff0c;此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合&#xff0c;每一个文件都为一个包含require文件名的token数组 接着回到main.php中&#xff0c;此时…

【Linux网络编程】4.TCP协议、select多路IO转换

目录 TCP协议 TCP通讯时序 三次握手 四次挥手 滑动窗口 测试代码1 测试结果 Address already in use解决方法 批量杀进程 测试代码2 测试结果 测试代码4 测试结果 TCP状态转换 主动发起连接请求端 主动关闭连接请求端 被动接收连接请求端 被动关闭连接请求端…

使用Docker安装MySQL5.7.36

拉取镜像并查看 docker pull mysql:5.7.36拉取成功后查看&#xff08;非必须&#xff09; docker images创建并设置宿主机 mysql 配置文件目录和数据文件目录 创建相关文件夹将容器中的mysql数据保存到本地&#xff0c;这样即使容器被删除&#xff0c;数据也不会丢失。 mkd…

【微积分听课笔记】全微分,二元极值,Double Integral

6.6 二元函数的极值_哔哩哔哩_bilibili 此笔记为听课笔记&#xff0c;宋浩老师微积分~ 最近诸事缠身&#xff0c;会有种会不会只做一件事好些。实际上&#xff0c;关键在于动力&#xff0c;我不可能每次都准备充分。动力&#xff0c;分配&#xff0c;这是目前进入大学我正在学…

中仕公考:2024年甘肃兰州事业单位招聘公告

兰州市7个县区和市属48家事业单位计划面向社会公开招聘工作人员536名(管理岗位82名&#xff0c;专业技术岗位447名&#xff0c;工勤技能岗位7名)。 应聘人员年龄要求18周岁以上(2006年5月7日以前出生) 报名&#xff1a;2024年5月11日至5月15日(上午9:00至下午17:00) 资格审查…