初学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转换为double

	num_double =(double) num_int;
  1. 函数表示法(也称为老式c++风格的类型转换)
  • 函数样式转换
    我们还可以使用类似符号的函数将数据从一种类型转换为另一种类型。

这种类型的语法是:

data_type(expression);

比如

	//函数样式转换
	int num_int = 25;

	//声明double变量
	double num_double;

	//从int转换为double
	num_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风格类型转换和函数样式转换进行类型转换,并显示结果。由于它们执行相同的任务,因此两者都给我们相同的输出。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python中如何遍历字典

1. 遍历字典的键key ① >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6)} >>> for key in d:print(str(key):str(d[key])) list:[1, 2, 3] 1:123 111:python3 tuple:(4, 5, 6) ② >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6…

2024年数维杯数学建模C题思路

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

包装类~~

包装类的分类 针对八种基本数据类型相应的引用类型——包装类有了类的特点&#xff0c;就可以调用类中的方法 包装类和基本数据的转换 演示 包装类和 基本数据类型的相互转换&#xff0c;这里以int 和 Integer演示 jdk5前是手动装箱和拆箱方式 装箱&#xff1a;基本类型-&…

Temu、Shopee、阿里国际卖家如何利用自养号测评提升店铺排名

在流量为王的时代&#xff0c;流量无疑等同于销量和利润。对于temu、Shopee以及阿里国际的卖家们来说&#xff0c;关注流量成为了日常运营中不可或缺的一环。今天&#xff0c;我们将一同探讨和分析temu、Shopee及阿里国际的流量来源&#xff0c;帮助卖家们更有效地提升店铺流量…

comfyui安装deforum启动不了,多半是ffmpeg的问题

如果报错中出现imageio 和 ffmpeg 的字样&#xff0c;去装requirement也没啥用 这里最好到cmd中&#xff0c;进入comfyui的python环境&#xff0c;运行以下两句&#xff1a; import imageio imageio.plugins.ffmpeg.download() 图例&#xff1a; 如果节点不报错了&#xff0…

UE5自动生成地形一:地形制作

UE5自动生成地形一&#xff1a;地形制作 常规地形制作地形编辑器地形管理添加植被手动修改部分地形的植被 置换贴图全局一致纹理制作地貌裸露岩石地形实例 常规地形制作 地形制作入门 地形导入部分 选择模式&#xff1a;地形模式。选择地形子菜单&#xff1a;管理->导入 …

mac监听 linux服务器性能可视化(Grafana+Promethus+Node_exporter)

Grafana和promethus(普罗米修斯)的安装和使用 监控系统的Prometheus类似于一个注册中心&#xff0c;我们可以只需要配置一个Prometheus,而在其他服务器&#xff0c;只需要安装node_exporter,它们的数据流转就是通过exporter采集数据信息&#xff0c;然后告诉prometheus它的位置…

【声明ACL权限】

声明ACL权限 当应用在申请权限来访问必要的资源时&#xff0c;发现部分权限的等级比应用APL等级高&#xff0c;开发者可以选择通过ACL方式来解决等级不匹配的问题。 举例说明&#xff0c;如果应用需要使用全局悬浮窗&#xff0c;需要申请 ohos.permission.SYSTEM_FLOAT_WINDO…

信息熵为凹函数-推导

凹函数和凸函数&#xff0c;是凹凸是相对于x轴来说的&#xff0c;对于熵来说&#xff0c;它是凹函数。因为它是-log函数&#xff0c;函数曲线相对于x轴来说是凸的。 Jensen不等式推导 以下是证明熵是凹函数。 引理&#xff1a; ①Jensen不等式&#xff0c;条件&#xff1a;…

【计算机网络】因特网概述

一.发展的三个阶段 二.ISP介绍 因特网服务提供者&#xff08;Internet Service Provider&#xff09;&#xff0c;简称ISP&#xff0c;普通用户是通过 ISP 接入到因特网的&#xff0c;ISP 可以从因特网管理机构申请到成块的 IP 地址&#xff0c;同时拥有通信线路以及路由器等连…

Linux 第二十三章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案&#xff0c;实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力&#xff0c;为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会&#xff0c;为用户带来前所未有的互动体验。 颠覆传统&#xff0c;开启AR人…

如何使用cPanel的Transfers功能迁移cPanel账户

近期由于我们的原虚拟主机提供商不再支持低版本的PHP&#xff0c;我们准备将所有的cPanel账户都迁移到在Hostease购买的独立服务器中&#xff0c;新购买的独立服务器配置了cPanel&#xff0c;下面我就介绍如何使用cPanel的Transfers功能&#xff0c;将旧服务器的cPanel账户迁移…

5月的现货黄金价格还会涨吗

近期美国经济陷入滞胀的预期升温&#xff0c;市场对美联储年内降息的预期有所走低&#xff0c;然而目前美国10年期国债的实际收益率已处于2%左右的历史高位&#xff0c;降息空间最终还是打开&#xff0c;带来实际利率的趋势下行——在去全球化的背景下&#xff0c;美元信用持续…

Tuxera NTFS for Mac Mac用户无缝地读写NTFS格式的硬盘和U盘

在数字化时代&#xff0c;数据交换和共享变得日益重要。然而&#xff0c;对于Mac用户来说&#xff0c;与Windows系统之间的文件交换可能会遇到一些挑战。这是因为Mac OS默认不支持Windows常用的NTFS文件系统。幸运的是&#xff0c;Tuxera NTFS for Mac为我们提供了一个优雅的解…

JAVA代码审计2个小tips

1、lib文件过多时&#xff0c;快速定位lib代码文件 如已知java-callgraph找出的类名 但不知道在哪个lib文件时可利用该工具快速获取到相关lib&#xff0c;适用于大量不知道lib文件的情况。 SearchClassInJar.jar 2、快速定位api路由思路 静态&#xff1a; springmvc框架 …

内容安全(AV)

防病毒网关&#xff08;AV&#xff09;简介 基于网络侧 识别 病毒文件&#xff0c;工作范围2~7层。这里的网关指的是内网和外网之间的一个关口&#xff0c;在此进行病毒的查杀。在深信服中就有一个EDR设备&#xff0c;该设备就是有两种部署&#xff0c;一个部署在网关&#xf…

[Kubernetes] KubeKey 部署 K8s v1.28.8

文章目录 1.K8s 部署方式2.操作系统基础配置3.安装部署 K8s4.验证 K8s 集群5.部署测试资源 1.K8s 部署方式 kubeadm: kubekey, sealos, kubespray二进制: kubeaszrancher 2.操作系统基础配置 主机名内网IP外网IPmaster192.168.66.2139.198.9.7node1192.168.66.3139.198.40.17…

【竞技宝】英超:曼联4球惨败水晶宫,滕哈赫下课倒计时

曼联在本轮客场挑战水晶宫,这场比赛对于红魔来说就是不折不扣的复仇之战。因为,曼联曾经主场输给过水晶宫。所以,曼联再次遇到水晶宫,自然是憋着一口气要复仇。只是,曼联重压之下彻底迷失,被水晶宫4比0击溃。或许赛前有部分红魔球迷,会预料到曼联可能会输球,但是他们绝对不会想…

【Golang】VSCode进行GO的调试

原来的launch.json {"version": "0.2.0","configurations": [{"name": "Golang","type": "go","request": "launch","program": "${workspaceFolder}","…