初学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://www.mzph.cn/pingmian/8207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git commit后发现git pull 拉取代码失败的解决方案(致命错误:需要指定如何调和偏离的分支。)

文章目录 前言一、情况复现1.以前多人开发同一分支提交代码逻辑(下拉取后提交)2.报错 二、解决方案1. 撤销最近一次提交2.提交代码3.注意点&#xff1a;常用的 git stash 命令&#xff1a; 前言 人员张三和人员李四在同一分支&#xff08;dev&#xff09;上开发 一、情况复现 …

springboot中使用fastJson返回前端数据出现$ref处理

出现场景&#xff1a; 一个返回对象中的多个属性集合相同 如&#xff1a;下图中的tips和geocodes的对象相同&#xff0c;反参给前端数据结构会出现下面情况 解决方案 在一个集合中&#xff0c;循环给这个对象赋值会出现"$ref":" $ [0]"&#xff0c;它会认…

代码随想录算法训练营第四十二天| 01背包问题理论基础,416. 分割等和子集

理论基础&#xff1a; 带你学透0-1背包问题&#xff01;| 关于背包问题&#xff0c;你不清楚的地方&#xff0c;这里都讲了&#xff01;| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili很多同学对背包问题的理解程度都处于一种黑盒的状态&#xff0c;及时这道题目在力…

现在学plc有前途吗?要怎么学习plc,有什么要求?

当然有前途 PLC 是以传统顺序控制器为基础&#xff0c;综合了计算机技术、微电子技术、自动控制技术、数字技术和通信网络技术而形成的新型通用工业自动控制装置&#xff0c;是一种数字运算操作的电子系统&#xff0c;专为在工业环境下应用而设计。 目前&#xff0c;PLC 在国…

47. UE5 RPG 实现角色死亡效果

在上一篇文章中&#xff0c;我们实现了敌人受到攻击后会播放受击动画&#xff0c;并且还给角色设置了受击标签。并在角色受击时&#xff0c;在角色身上挂上受击标签&#xff0c;在c里&#xff0c;如果挂载了此标签&#xff0c;速度将降为0 。 受击有了&#xff0c;接下来我们将…

CSS选择器(基本+复合+伪类)

目录 CSS选择器 基本选择器 标签选择器&#xff1a;使用标签名作为选择器->选中同名标签设置样式 类选择器&#xff1a;给类选择器定义一个名字.类名&#xff0c;并给标签添加class"类名" id选择器&#xff1a;跟类选择器非常相似&#xff0c;给id选择器定义…

设计模式——适配器模式(Adapter)

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;主要用于将一个类的接口转换成客户端所期望的另一种接口&#xff0c;从而使得原本因接口不兼容而无法一起工作的类能够协同工作。 适配器模式主要解决两类问题&#xff1a; 类的接口不兼容…

QT day2 作业

头文件 #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QDebug> #include<QIcon> #include<QLabel> #include<QMovie> #include<QLineEdit> #include<QPushButton> QT_BEGIN_NAMESPACE namespace Ui { class …

亲测idea打包java项目jar包+运行jar包

文章目录 配置运行jar包 配置 1、文件 -> 项目结构 2、工件 -> -> JAR -> 来自具有依赖项的模块... 3、选择文件路径 4、构建 -> 构建工件 5、选择工件进行构建 6、项目目录中会生成out目录&#xff0c;jar在里面 运行jar包 java -jar xxx.jar 默认…

连锁餐饮店做扫码点餐小程序的作用是什么

餐饮业市场规模高&#xff0c;餐厅、奶茶店、火锅店、小吃店、烧烤店等每天都有不少用户消费&#xff0c;其中也不乏连锁品牌&#xff0c;在线下就餐场景里&#xff0c;扫码点餐已经成为众多商家必备&#xff0c;提升客户餐品选择效率&#xff0c;也能提高商家管理能力及节约时…

MySQL新版本特性及升级注意事项

随着技术的不断发展&#xff0c;MySQL数据库也在不断地进行版本更新和特性增强。新版本不仅带来了更高的性能和更好的稳定性&#xff0c;还为用户提供了更多灵活和强大的功能。然而&#xff0c;在进行MySQL版本升级时&#xff0c;我们也需要考虑一些重要的注意事项&#xff0c;…

深入探究MySQL常用的存储引擎

前言 MySQL是一个广泛使用的开源关系型数据库管理系统&#xff0c;它支持多种存储引擎。存储引擎决定了MySQL数据库如何存储、检索和管理数据。不同的存储引擎具有不同的特点、性能表现和适用场景。选择适合的存储引擎对于优化数据库性能、确保数据完整性和安全性至关重要。本…

Express初体验

介绍 Express是一个基于Node.js平台的极简、灵活的Web应用开发框架&#xff0c;官方地址&#xff1a;https://www.expressjs.com.cn/&#xff0c;简单来说&#xff0c;Express是一个封装好的工具包&#xff0c;封装了很多功能&#xff0c;便于我们开发Web应用&#xff08;HTTP…

Debian——安装syzkaller——2024

系统:Debian 远程连接——我是不想安装tools没有办法复制黏贴,所以远程,根据个人情况选择是否远程连接 就是说使用Windows自带的远程mstsc,使用的不是ssh22端口,是TCP 3389端口 mkdir debian cd debian 二:安装go编译器 打开终端。使用wget命令从官方网站或可信的镜像…

【WEB前端2024】简单几步制作web3d《萌宠星球》智体节点模板(2)

【WEB前端2024】简单几步制作web3d《萌宠星球》智体节点模板&#xff08;2&#xff09; 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体…

Flink面试整理-Flink的性能优化策略

Apache Flink 的性能优化是一个多方面的任务,涉及硬件资源、算法选择、配置调整等多个层面。以下是一些常见的 Flink 性能优化策略: 1. 资源分配和管理 合理配置 TaskManager 和 JobManager:根据作业的需求和可用资源,合理分配内存和 CPU 给 TaskManager 和 JobManager。适…

500 Internal Server Error问题

总结 mysql语句有问题 #前端报错#后端报错 SQL错误&#xff0c;sql的where条件不全 delete from dish.flavor where dish.id#修改一番 #将in加上即可

win平台c语言引入开源库的问题与解决,以引入cJSON库为例

目录 遇到的问题 开源依赖库引入的问题 问题的解决 生成dll文件 方式一 方式二 在VsCode中如何使用开源库 文件放置位置 配置文件进行配置 引入头文件 结束 许久不写博客&#xff0c;五一还在加班&#xff0c;就浅浅写一篇吧。 最近除了做物联网平台,还对网关二次开…

SpringBoot过滤器简单构建详细教程以及与拦截器区别解释

作用范围&#xff1a;过滤器基于Servlet规范&#xff0c;作用于更广泛的层面&#xff0c;不仅限于Spring MVC&#xff0c;它可以拦截进入Web应用的所有请求&#xff0c;包括静态资源请求。过滤器可以对请求和响应的内容进行预处理和后处理。实现方式&#xff1a;过滤器需要实现…

解锁性能之门:探究Spring MVC异步请求的利与弊

在传统的 Web 应用程序中&#xff0c;客户端发起请求后&#xff0c;服务器端会阻塞等待直到请求处理完成并返回响应。 这种同步请求的方式在某些情况下可能会导致服务器资源的浪费和用户体验的下降&#xff0c;特别是在处理耗时的操作时。为了提高性能和用户体验&#xff0c;S…