【C++ Primer Plus】第3章 基本数据类型

面向对象编程(OOP)的本质是设计并扩展自己的数据类型。设计自己的数据类型就是让类型与数据匹配。
C++内置数据类型分为基本类型和复合类型。基本类型包括整数、浮点数,以及多种变体;复合类型包括数组、字符串、指针和结构。
变量一种标识存储的数据的方法
算术运算
类型转换

3.1 简单变量

信息存储的3个基本属性: 信息将存储在哪里;存储什么值;存储何种类型的信息;

int braincount;  // 整数;变量名(内存单元标记):braincount;// 可通过braincount访问该内存单元;&braincount访问该内存单元地址;
braincount = 5;  // 将5复制在内存单元中,

3.1.1 变量名

变量命名规则

  • 在名称中只能使用字母字符、数字和下划线(_)。
  • 名称的第一个字符不能是数字。
  • 区分大写字符与小写字符。
  • 不能将C++关键字(C++ key word)用作名称。
  • 以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。
  • C++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制。

3.1.2 整型

short 至少16位 或2B
int 至少和short一样长
long 至少32位,至少和int一样长
long long 至少64位,至少和long一样长

3.1.3 无符号整型

unsigned short change;			// unsigned short type
unsigned int rovert;			// unsigned int type
unsigned quarterback;			// also unsigned int,unsigned 本身是 unsigned int 的缩写。
unsigned long gone;				// unsigned long type
unsigned long long lang_lang;   // unsigned long long type

3.1.4 运算符sizeof

计算机内存的基本单元是位(bit);
字节(byte)指得的8位的内存单元,是描述计算机内存量的度量单位。
sizeof(类型名) e.g. sizeof(int)
sizeof 变量名 e.g. sizeof apple

3.1.5 初始化与溢出

初始化
  1. 先定义,再初始化
  int year;year=2024;
  1. 定义的同时初始化
 int year=2024;  // int year(2024); int apple = { 5 };int pie ={ };
  1. 初始化的传递
int apple =5;
int pie =10;
int applepie = apple +pie;   // applepie =15;
溢出

3.1.6 整型字面值

int chest = 42;   // decimal integer literal 十进制
int inseam = 042;  // octal integer literal 八进制;42的基数是8,它相当于十进制数34
int waist = 0x42; // hexadecimal integer literal 十六进制

整型字面值(常量)是显式地书写的常量,如212或1776。与C相同,C++使用前一(两)位来标识数字常量的基数,以三种不同的计数方式:

基数为10:第一位为1 ~ 9,则基数为10(十进制);
基数为8(老式 UNIX版本):第一位是0,第二位为1~7,则基数为8;
基数为16(硬件黑客的最爱):前两位为0x或0X,则基数为16(十六进制);

按照十进制输出:

cout << "Monsieur cuts a striking figure!\n";
cout << "chest = " << chest " (42 in decimal)\n";   //chest = 42 (42 in decimal)
cout << "waist = " << waist << " (0x42 in hex)\n";  //waist = 66 (0x42 in hex)
cout << "inseam = "<< inseam << " (042 in octal)\n";//inseam = 34 (042 in octal)

按不同进制输出:

cout << "Monsieur cuts a striking figure!" << endl;
cout << " chest = " << chest << "(decimal for 42)" << endl;   //chest = 42 (decimal for 42)cout << hex;  // manipulator for changing number base
cout << "waist = " << waist << "(hexadecimal for 42) " << endl; //waist = 2a (hexadecimal for 42)cout << oct; // manipulator for changing number base
cout << "inseam = " << inseam << "(octal for 42)" << endl;  //inseam = 52 (octal for 42)

3.1.7 C++ 默认存储类型

cout << "key = " << 10086 << endl; 

10086 默认存储为int;如果过大存储为long;或者long long;

对于不带后缀的十六进制或八进制整数,将使用下面几种类型中能够存储该数的最小类型来表示:int、unsigned int or long、 unsigned longlong long 或 unsigned long long.

u or U  			  	 表示unsigned int
l or L                	 表示long
ul or UL or uL or ul     表示unsigned long
ull or ULL or uLL or Ull 表示unsigned long long

在将40000表示为long 的计算机系统中,十六进制数0x9C40 (40000)将被表示为unsigned int。unsigned int 比long 更适合表示16位的地址,十六进制通常用来表示内存地址,而内存地址是无符号的。

3.1.8 char

char 用于存储字符(字母或数字)而设计的。
char 类型是另一种整型。它足够长,能够表示目标计算机系统中的所有基本符号一一所有的字母、数字、标点符号等。通常一个字节就可以表示所有的符号。因此,char最常被用来处理字符,也可以将它用做比short更小的整型。

char ch = 'M'; // assign ASCII code for M to ch
int i = ch;  // store same code in an int
cout << "The ASCII code for " << ch <<" is" << i << endl; //The ASCII code for M is 77cout << "Add one to the character code:" << endl;
ch = ch + 1;		// change character code in ch
i = ch;				// save new character code in i
cout << "The ASCII code for " << ch << " is" << i << endl;  // using the cout.put() member function to display a char//The ASCII code for N is 78cout << "Displaying char ch using cout.put (ch): ";
cout.put (ch);  // using cout.put() to display a char constant
cout.put('!');//Displaying char ch using cout.put (ch): N!

直接输出字符; 输出字符对应的ASCII 值

#include <iostream>int main() {char ch = 'A';std::cout << "字符: " << ch << std::endl; // 输出字符Astd::cout << "ASCII值: " << static_cast<int>(ch) << std::endl; // 输出ASCII值65 使用static_cast<int>(ch)是将字符转换为它的整数值return 0;
}

3.1.9 bool 类型

bool is_ready true;

布尔变量只有true或false;
任何数值都可以被隐式转换为bool值,非零值被抓换为true,零被转换为false;

3.2 const 限定符

const int Month =12;  // Month 为符号常量

首字母大写or 整个名称均大写 or 字母k开头,提示为常量
建议创建常量的同时进行初始化;

建议用const 而非#define 定义常量

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

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

相关文章

001 websocket(评论功能demo)(消息推送)

文章目录 ReviewController.javaWebSocketConfig.javaWebSocketProcess.javaServletInitializer.javaWebsocketApplication.javareadmeindex.htmlapplication.yamlpom.xml ReviewController.java package com.example.controller;import com.example.websocket.WebSocketProces…

量子波函数白话解释

关键词&#xff1a;Quantum Wave Function 文章目录 一、说明二、什么是波函数&#xff1f;三 量子波的可视化四、量子波的概率解释 一、说明 在量子力学中&#xff0c;粒子是我们只有在测量它们时才能看到的东西。其中运动模式由满足薛定谔方程的波函数描述。波函数并非量子…

【重学C语言】十三、字符串

【重学C语言】十三、字符串 字符串存储字符串输入手写字符串部分操作函数字符串操作函数字符串长度字符串复制字符串连接字符串比较字符串搜索字符串分割字符串大小写转换字符串内存分配字符串替换字符串格式化其他内存操作函数字符串存储 在C语言中,字符串通常是以字符数组(…

基于JSP动漫论坛的设计与实现(四)

目录 功能模块测试 6.1 测试概述及所用方案 6.1.1软件测试概述 6.1.3 测试的步骤 6.1.4 测试的主要内容 6.1.5 测试方案 6.1.6测试设计 6.2 前端功能测试 6.2.1 登录功能测试 6.2.2 注册功能测试 6.2.3 发帖功能测试 6.2.4 回复帖子测试 6.3 后台功能测试 6…

为什么我们做C++项目的时候,需要写头文件

在C项目中&#xff0c;头文件&#xff08;通常具有.h或.hpp扩展名&#xff09;的使用是组织代码、提高可重用性和维护性的关键部分。以下是为什么我们在C项目中需要写头文件的一些主要原因&#xff1a; 声明与定义分离&#xff1a; 头文件通常包含类、函数、变量等的声明&…

vulnhub靶场之FunBox-5

一.环境搭建 1.靶场描述 Lets separate the script-kids from script-teenies.Hint: The first impression is not always the right one!If you need hints, call me on twitter: 0815R2d2 Have fun...This works better with VirtualBox rather than VMwareThis works bett…

导电材料——分类、性能与性质

本篇为西安交通大学本科课程《电气材料基础》的笔记。 导电材料指的是能在电场下传导电流的材料。导体价电子所在能带为半满带&#xff0c;且相邻能级间隔小&#xff0c;外电场下电子很容易从低能级跃迁到高能级上&#xff0c;大量的电子很容易获得能量进行共有化运动&#xf…

NPDP|传统行业产品经理如何跨越鸿沟,从用户角度审视产品

随着科技的飞速发展和互联网的普及&#xff0c;产品经理的角色已经从单纯的产品规划者逐渐转变为全方位的用户体验设计者。对于传统行业的产品经理来说&#xff0c;这是一个挑战与机遇并存的时代。他们不仅要面对激烈的市场竞争&#xff0c;还要学会如何跨越与新兴科技行业之间…

Scala编程入门:从零开始的完整教程

目录 引言环境准备创建第一个Scala项目基本语法高阶概念进阶资源结语 引言 Scala是一种强大的、静态类型的、多范式编程语言&#xff0c;它结合了面向对象和函数式编程的特点。本教程将指导您如何从零开始学习Scala&#xff0c;并搭建一个简单的开发环境。让我们开始探索Scala…

【好困】磁场里的瞌睡虫:地磁暴真的会让我们感到疲倦吗?

【好困】磁场里的瞌睡虫&#xff1a;地磁暴真的会让我们感到疲倦吗&#xff1f; 写在最前面地磁暴真的会让我们感到疲倦吗&#xff1f;一探究竟地磁暴是什么&#xff1f;地磁暴如何影响人体&#xff1f;结论 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每…

安阳知识付费系统,课程涨价造成学员流失怎么办?

很多校长正在琢磨春季班涨价的事情。今年物价上涨&#xff0c;校区运营成本增加&#xff0c;他的压力很大。但是他又担心涨价后&#xff0c;家长接受不了&#xff0c;导致生源流失怎么办? 一、学校自身有合理的利润空间;二、价格符合当地行业情况和经济水平&#xff0c;意思不…

nextTick的作用与原理

在 Vue 中&#xff0c;nextTick允许我们延迟执行一段代码&#xff0c;直到 Vue完成其当前的 DOM 更新周期。这使得我们可以在 DOM 更新后安全地访问和修改 DOM 元素。 一、Vue 的异步更新策略 Vue 采用了一种称为异步更新策略的机制。这意味着当数据发生变化时&#xff0c;Vue…

对话易参创始人黄怡然:股权能不能赋能企业增长?| 极新企服直播实录

“ 致所有爱画饼的老板 ” 整理 | 云舒 编辑 | 小白 出品&#xff5c;极新 2022年以前&#xff0c;股权激励作为企业实现增长、吸引人才、保留人才并大幅度激发人才价值的重要手段&#xff0c;几乎成为每一个企业的标配。但是&#xff0c;现在这个时代&#xff0c;股权激励几…

简易的Web登录功能(Servlet,mybatis,MySQL)

效果 介绍 javaEE项目&#xff0c;见123 JDK8&#xff0c;JavaEE8 项目结构(下面没写的文件就是空的&#xff0c;或者系统自动生成的) mysql中的表 步骤 创建Web页面引入mybatis,MySQL依赖写后端程序() 1 创建Web页面 index.html <!DOCTYPE html> <html l…

深度学习:基于人工神经网络ANN的降雨预测

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 本专栏涉及创建深度学习模型、处理非结构化数据以及指导复杂的模型&#xff0c;如卷积神经网络(CNN)、递归神经网络 (RNN)&#xff0c;包括长短期记忆 (LSTM) 、门控循环单元 (GRU)、自动编码器 (AE)、受限玻尔兹曼机(…

Java面试题:Synchronized和Lock的对比

Synchronized和Lock对比 语法层面 Synchronized是关键字,源码在jvm中,用c语言实现 使用时,退出同步代码块时会自动释放 Lock是接口,源码由jdk提供,用java语言实现 使用时,需要手动调用unlock方法进行释放 功能层面 都属于悲观锁,具备基本的互斥,同步,锁重入功能 但Lock…

数组随机排序

如何将一个数组随机排序&#xff1f; 这个题目很有意思&#xff0c;我在直播的时候看的&#xff0c;大家讨论如何将一个数组进行随机排序。然后我想到的是sortMath.random() 也就是下面这样: function shuffle(array) {return array.sort(() > Math.random() - 0.5) }利用…

Golang reflect.MakeFunc() 的用法及示例

Golang 作为一门强类型语言&#xff0c;在某些场景下&#xff0c;我们需要动态地创建函数或者修改函数&#xff0c;这个时候就可以使用反射的方法去实现。在反射中&#xff0c;我们可以使用 reflect.MakeFunc() 方法来创建一个新的函数&#xff0c;本文我将介绍使用反射及其 Ma…

NX二次开发,在指定的装配节点下新建或者添加组件

目录 一、概述 二、存在的问题 三、在指定的装配节点下新建或者添加组件的实现 四、结果显示 一、概述 最近学习装配内容,说一说体会吧,用起来很爽,开发起开是真的别扭啊,而且,网上可以收到的关于装配的知识有很多,都是简单的添加组件,移动组件,删除组件,等等一些…

【Linux】-网络请求和下载、端口[6]

目录 一、网络请求和下载 1、ping命令 2、wget命令 3、curl命令 二、端口 1、虚拟端口 2、查看端口占用 一、网络请求和下载 1、ping命令 可以通过ping命令&#xff0c;检查指定的网络服务器是否可联通状态 语法&#xff1a;ping [ -c num ] ip或主机名 选项&…