C++学习之旅-入门永远的HelloWorld变量的基础

news2024/12/23 18:21:39

文章目录

      • 创建文件(Hello World)
      • 注释
      • 变量的使用
      • 常量
      • 标识符命名规则
      • 数据类型
        • 整形
        • sizeof关键字
        • 实型(浮点类型)
        • 字符型
        • 转义字符
        • 字符串类型
        • 布尔类型
        • 数据的输入
        • 加减乘除运算
        • 算数运算
        • 逻辑运算
      • 程序流程结构
        • 选择结构
        • 循环结构
      • 跳转语句
        • 举例(while循环+break)
        • 举例(for循环+contine)
      • 跳转语句goto
      • 数组
        • 一维数组
          • 数组名
          • 数组逆置
          • 冒泡排序
        • 二维数组
          • 数组名称

VsStudio下载
在这里插入图片描述
在这里插入图片描述

创建文件(Hello World)

在这里插入图片描述

或者添加模块

在这里插入图片描述

//main.cpp
#include <iostream>

using namespace std;

int main(void) {
	cout << "hello world" << endl;
	system("pause");
	return 0;
}

注释

  • 单行注释: //
  • 多行注释: /**/

变量的使用

变量就是方便我们操作内存中的数据
语法: 数据类型 变量名 = 变量初始值。例如: int a = 10;

常量

常量用于记录程序中不可更改的数据

常量定义的俩种方式

  • #define宏常量:#define 常量名 常量值
  • const修饰的变量: const 变量名 = 常量值

标识符命名规则

作用: C++标识符(变量,常量)命名时有一套自己的规则

  • 标识符不能是关键字
  • 标识符只能由字母、数字、下划线组成
  • 第一个字母必须是字母或者下划线
  • 标识符中字母区分大小写

定义是,尽量见名知意,方便他人和自己阅读

数据类型

整形

数据类型占用空间取值范围
shot(短整型)2字节(-215~215-1)
int(整形)4字节(-231~231-1)
long(长整形)windows是4字节,Linux为4字节(32位)8字节(64位)(-231~231-1)
long long(长长整形)8字节(-263~263-1)

sizeof关键字

#include <iostream>

using namespace std;

int main(void) {
	long long ll = 628;
	cout << sizeof(ll) << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

实型(浮点类型)

数据类型占用空间有效值范围
float4字节7位有效数字
double8字节15~16位有效数字
#include <iostream>

using namespace std;

int main(void) {
	float pi = 3.14f;
	double test = 3.1415926;
	cout << "单精度:" << pi << endl;
	cout << "双精度:" << test << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

字符型

作用: 字符型变量用于显示单个字符
语法: char ch = 'a'(只能写单引号和里面只能写一个字符)

#include <iostream>

using namespace std;

int main(void) {
	char ch = 'a';
	cout << ch << endl;
	cout << sizeof(ch) << endl;
	cout << (int)ch << endl;
	system("pause");
	return 0;
}

字符型变量并不是本身放入内存存储,而是将对应的ASCII码放入
在这里插入图片描述

转义字符

转义字符含义ASCII码值(十进制)
\a警报007
\b退格008
\f换页012
\n换行010
\r回车(CR)013
\t水平制表009
\v垂直制表011
\\代表一个反斜线字符"\"092
\’代表一个单引号039
\‘’代表双引号034
\?代表一个问号063
\0数字00000
\ddd8进制转移字符,d范围0~73位8进制
\hhh16进制转移字符,h范围:0-9,a-f3位16进制

字符串类型

作用:表示一串字符

  • C语言风格字符串char 变量名[] = "字符串值"
char str[] = "...";
  • C++风格字符串string 变量名 = "字符串值"
string str = ""

布尔类型

布尔类型返回值只有真(本质是1)或假(本质是0)

int main(){
  bool flag = true
  cout << flag << endl;
}

数据的输入

关键字cin
语法: cin >> 变量

int a = 0;
cin >> a;
cout << "输入的值:" << a << endl

加减乘除运算

运算符类型作用
算术运算符用于处理四则运算
赋值运算符用于将表达式的值给变量
比较运算符用于表达式的比较,并返回一个真或假值
逻辑运算符用于根据表达式的值返回真值或假值

算数运算

运算符属于示例结果
+正号+33
-负号-3-3
+10+515
-10-55
*10*550
/10 / 52
%取模(取余)10%31
++前递增a=0;++a0,1
++后递增a=0;a++0,0
前递减a=2;–a2,1
后递减a=0;a–2,2

逻辑运算

运算符术语示例结果
!!a如果a为假,那么!a就是真
&&a && b如果a和b为真,结果才为真
||a||b如果a和b其中一个为真, 结果就为真

程序流程结构

C/C++支持的三种运行结构: 顺序结构,选择结构,循环结构

选择结构

if语句(单行)
语法if(条件){}

int main(){
  int a = 10;
  if(a > 0){
    cout<< a << endl;
  }
}

if语句(多行)
语法if(条件){}else{}

int a = 0;
if(a > 10){
//...
}else{
//...
}

if语句(多条件)
语法if(条件1){}else if(条件2){}else if(条件n){}else{}

嵌套if语句
语法if(条件1){if(条件2){}}

三目运算符
语法条件?true的语句:false的语句

int a = 10;
a < 10? "真的":"假的";

switch语句
语法switch(条件){case value1:执行语句;break;case value2:执行语句;break;}

循环结构

while循环语句
语法while(条件){满足条件执行循环}

do…while语句
语法do{}while(条件)
不同点: 相比于while循环dowhile循环是无论满不满足条件都会执行一次

for循环
语法for(起始表达式;条件表达式;末尾循环体){循环语句}

for(int i = 0; i< 10; i++){
  cout<< i << endl;
}

嵌套循环

for(int i=0;i<5;i++){
  for(int j=0; j< 3;j++){
    cout << i*j << endl;
  }
}

跳转语句

作用: 用于跳出选择结构或者循环结构

举例(while循环+break)

int i = 0;
while(true){
  //死循环
  if(i >= 10){
    //当满足条件,跳出循环
    break;
  }
  i++;
}

举例(for循环+contine)

for(int i = 0; i< 10; i++){
  if(i / 2 == 0){
    contine;
  }
}

跳转语句goto

  • 可以之前的那个break的案例来进行修改
  • 语法goto Name;Name:语句
#include <iostream>

using namespace std;

int main(void) {
    int i = 0;
    while (true) {
        //死循环
        if (i >= 10) {
            //当满足条件,跳出循环
            goto FLAG;
        }
        i++;
    }
    FLAG:cout << i << endl;
}

不怎么用的原因是: 跳转过于平凡逻辑会很混乱

数组

  • 特点一: 数组中每个数据元素都是相同数据类型
  • 特点二: 数组是由连续的内存位置组成

一维数组

定义一维数组的三种方式:

  1. 数据类型 数组名[数组长度];
  2. 数据类型 数组名[数组长度] = {值1,值2,....}
  3. 数据类型 数组名[] = {值1,值2,....}
//数据类型 数组名[数组长度];
int arr[5];
//给数组中的元素进行赋值
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
//访问数据元素
//cout << arr[0] << endl;
//cout << arr[1] << endl;
//cout << arr[2] << endl;
//cout << arr[3] << endl;
//cout << arr[4] << endl;
for(int i=0;i < 5; i++){
  cout << arr[i] << endl;
}
数组名

一维数组的名称的用途:

  1. 可以统计整个数组在内存中的长度
  2. 可以获取数组在内存中的首地址
//1.可以统计整个数组在内存中的长度
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
cout << "整个数组占用内存空间为:" << sizeof(arr) << endl;
cout << "每个元素占用内存空间为:" << sizeof(arr[0]) << endl;
cout << "数组中元素的个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;

//2. 可以获取数组在内存中的首地址
cout << "数组首地址为:" << (int)arr << endl;
cout << "数组中第一个元素地址为:" << (int)&arr[0] << endl;
数组逆置

所谓逆置就是首位数组元素交换

int start = 0;//起始元素下标
int end = sizeof(arr)/sizeof(arr[0]) - 1;//末尾元素下标

int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
冒泡排序

我们按照之前的哪个思路,先转换一次

#include <iostream>

using namespace std;

int temp;
int main(void) {
    int arr[] = { 4,2,8,0,5,7,1,3,9 };
    if (arr[0] > arr[1]) {
        temp = arr[0];
        arr[0] = arr[1];
        arr[1] = temp;
    }
    for (int i = 0; i < 8; i++) {
        cout << arr[i] << endl;
    }
}

在这里插入图片描述
发现交换成功

#include <iostream>

using namespace std;

int temp;
int main(void) {
    int arr[] = { 4,2,8,0,5,7,1,3,9 };
    //冒泡排序
    for (int i = 0; i < 9 - 1; i++) {
        for (int j = 0; j < 9 - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    //显示
    for (int i = 0; i < 9; i++) {
        cout << arr[i] << endl;
    }
}

二维数组

二维数组定义的四种方式:

  1. 数组类型 数组名[行数][列数];
  2. 数组类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};
  3. 数组类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};
  4. 数组类型 数组名[][列数] = {数据1,数据2,数据3,数据4};
int arr[2][3] = {
  {1,2,3},
  {4,5,6}
};
for(int i=0;i<2;i++){
  for(int j=0;j<3;j++){
    cout << arr[i][j] << " ";
  }
  cout<<endl;
}
数组名称
  • 查看二位数组所占有的内存空间
  • 获取二位数组的收地址
int arr[2][3] = {
  {1,2,3},
  {4,5,6}
};
//查看二位数组所占有的内存空间
cout << "二维数组占用的内存空间为:" << sizeof(arr) << endl;
cout << "二维数组第一行占用的内存空间为:" << sizeof(arr[0]) << endl;
cout << "二维数组第一个元素占用的内存空间为:" << sizeof(arr[0][0]) << endl;

cout << "二维数组行数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组列数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
//获取二位数组的收地址
cout << "二维数组首地址为: " << (int)arr << endl;
cout << "二维数组第一行首地址为: " << (int)arr[0] << endl;

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

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

相关文章

Eclipse教程 完结(上)

Eclipse 安装插件 查找和安装插件 Eclipse作为一个集成的IDE开发工具&#xff0c;为我们的软件开发提供了便利&#xff0c;eclipse除了自带的强大功能外&#xff0c;还支持功能丰富的插件。 我们可以通过Eclipse官方市场 (Eclipse Plugins, Bundles and Products - Eclipse …

【数据集】Cityscapes-流行的语义分割数据集

本文介绍用于智能驾驶场景的语义分割数据集Cityscapes。 1. Cityscapes数据集简介 在几个月的时间里&#xff0c;在 50 个城市的春季、夏季和秋季&#xff0c;主要是在德国&#xff0c;但也在邻近国家/地区&#xff0c;从移动车辆中获取了数十万帧。它们不是故意在恶劣的天气条…

NPM 制作命令行工具 - 入门案例

一、简介 经常通过 npm 安装 vue-cli、create-react-app 之类的命令行工具&#xff0c;那么如何简单的制作一个命令行工具呢&#xff1f;只需要几步即可&#xff01; 二、制作 创建 npm 命令行工具文件夹&#xff08;例如&#xff1a;dzm-cli&#xff09; 初始化 dzm-cli&am…

1 八皇后问题

算法 八皇后问题是在国际象棋的棋盘上放八个皇后&#xff0c;八个皇后不能互相攻击。国际象棋的皇后&#xff0c;可以横向攻击也可以纵向攻击&#xff0c;也可以斜向攻击。所以要放八个皇后&#xff0c;就必须任一直线和斜线上不能同时有两个皇后。比如以下就是一个八皇后方案&…

eslint的使用

为什么要使用eslint? ​ eslint可以帮助我们统一代码语法规范。 eslint官网: https://eslint.org/ 1.vscode中改缩进 ​ 设置->tabsize-> tab-size和vetur都改成2 ​ format->格式化->勾选format on save 2.Vscode安装Eslint插件 (1)配置Eslint插件 ​ 设…

Yandex:你不可错过的全能搜索引擎

目录 前言一、Yandex网站介绍1-1、网站介绍1-2、优势 二、Yandex网站使用技巧2-1、Yandex搜索引擎2-2、Yandex Maps2-3、Yandex Mail2-4、Yandex Games2-5、Yandex Images2-6、Yandex Video2-7、Yandex.Translate 结语 前言 andex是一家俄罗斯的互联网公司&#xff0c;成立于19…

【HarmonyOS】元服务和APP的相互跳转、相互成就

【关键字】 卡片、跳转、加桌 【背景介绍】 随着鸿蒙生态的发展&#xff0c;各种类型的应用都已经可以在Harmony OS上无差异的运行&#xff0c;面对鸿蒙新兴元服务的兴起&#xff0c;各大厂家可能都在考虑一个问题&#xff1a;如果已经有APP了&#xff0c;有必要再开发一款元…

用 JavaScript 对抗 DDOS 攻击 (下)

抗 v2 之前的那些奇技淫巧&#xff0c;纯属娱乐而已&#xff0c;并不能撑多久。 但简单、好玩&#xff0c;似乎这正是对抗的乐趣。之前从未想过&#xff0c;居然还能把脚本黑科技&#xff0c;用在网络防御上。 于是&#xff0c;又陆陆续续对抗了一段时间。 直到兴致淡却&am…

WordPress 网站管家小程序源码

正文&#xff1a; Wordpress网站管家小程序源码&#xff0c;基于uniapp开发的产品&#xff0c;WP管家是主打用户访问端&#xff0c;兼容了微信小程序与安卓APP&#xff08;其他端未测试&#xff09;&#xff0c;用于用户的访问。 1、在Wordpress根目录新建一个文件夹&#xf…

达美乐的面试(部分)(未完全解析)

Java如何保证非线程安全的数据结构&#xff08;比如HashMap&#xff09;的原子性&#xff1f;读多写少时用哪种锁好? A: 方法1&#xff1a;CAS等乐观锁机制&#xff0c;方法2&#xff1a;如果读多写少&#xff0c;可以使用读写锁&#xff08;ReentrantReadWriteLock&#xff0…

在Centos Stream 9上Docker的实操教程(二) - Docker的常用命令

在Centos Stream 9上Docker的实操教程 - Docker的常用命令 Docker启动类命令Docker镜像命令镜像列表 docker images镜像查找 docker search拉取镜像 docker pull删除镜像 docker rmi查看占用信息 docker system df容器创建新镜像 docker commit 容器命令启动容器 docker run查看…

vue组件化路由

文章目录 vue项目1.vue组件2.插槽3.自定义指令4.vue路由 vue项目 vue项目中src目录的构成 assets: 存放项目中用到的静态资源文件,例如css,图片资源等components: 存放我们封装的、可复用的组件main.js: 项目的入口文件,整个项目的运行要先执行main.jsApp.vue: 项目的根组件 …

定时器详解 -- 定时器中断、PWM输出 --stm32

STM32定时器使用 STM32定时器计数模式定时器工作原理基本定时器&#xff1a;TIM6、TIM7示例代码代码讲解 通用定时器&#xff1a;TIM2、TIM3、TIM4、TIM5高级定时器&#xff1a;TIM1、TIM8定时器PWM输出原理通用定时器3控制通道1输出PWM脉冲代码 总结参考资料 STM32定时器 STM…

加密与解密 调试篇 动态调试技术 (三)-OllyDbg 插件 Run/Hit 符号调试 加载程序

目录 插件 这里给出一个命令行插件 Run Trace 运行 Hit Trace 符号调试 符号格式 1.SYM格式 2.COFF格式 3.CodeView格式 4.PDB格式 5.DBG格式 6.MAP文件 创建调试文件 加载程序 1.CreateProcess 2.将OllyDbg附加到一个正在运行的程序上 插件 OllyDbg允许插件 …

1计算机网络体系结构_1.1计算机网络概述

1.1.1计网_概念 概念&#xff1a; 计网是一个 将【分散的、具有独立功能的】计算机系统&#xff0c;通过【通信设备与线路】连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。简言之&#xff0c;计算机网络就是一些 互连的、自治的 计算机系统 的 集合。 …

excel函数采集,截取特殊符号前面/后面数据

截取前面 LEFT(I2,FIND("-",I2)-1) 截取后面 MID(I2,FIND("-",I2)1,99) 房贷利率计算公司&#xff0c;等额本金 (B2-G2*A2)*F2*0.01 Excel常用电子表格公式大全  一、Excel基本公式   1、查找重复内容公式&#xff1a;IF(COUNTIF(A:A,A2)>1,&qu…

国密算法解析

国密算法即国家密码局认定的国产密码算法。 国密算法是商用密码&#xff0c;仅能用于商业用途。国密算法是一套标准&#xff0c;由国家密码局制定的规范&#xff0c;凡是符合的&#xff0c;都可以称之为国密算法。国密算法暂无官方的代码实现&#xff0c;企业可以自己编码实现…

2022年五一杯数学建模A题血管机器人的订购与生物学习解题全过程及论文和程序

2022年五一杯数学建模A题 血管机器人的订购与生物学习 原题再现&#xff1a; 随着微机电系统的发展&#xff0c;人类已经可以加工越来越小的机器。这些机器小到一定程度就可以放进血管开展疾病治疗&#xff0c;这就是血管机器人。血管机器人可以携带药物放入血管里定点治疗与…

信号调制的工作原理

要理解如何进行无线数据传输&#xff0c;我们需要了解&#xff1a; 什么是频率&#xff1f; 信息/数据信号 时间表示 频率表示&#xff0c;为什么它很重要&#xff1f; 滤波器如何工作&#xff1f; FCC通信频段 调制和解调 这些主题可能您在大学专业课上学过&#xff0c…

uboot下的mw写内存和md显示内存命令以及nand命令

配置uboot参数 setenv ipaddr 192.168.0.10;setenv serverip 192.168.0.40;setenv gatewayip 192.168.0.1;setenv netmask 255.255.255.0 setenv bootargs mem512M consolettyAMA0,115200 root/dev/mtdblock2 rootfstypeyaffs2 rw init/init mtdpartshinand:1M(boot),4M(kern…