【C++ 程序设计】实战:C++ 变量实践练习题
目录
01. 变量:定义
02. 变量:初始化
03. 变量:参数传递
04. 变量:格式说明符
① 占位符 “%d” 改为格式说明符 “%llu”
② 占位符 “%d” 改为格式说明符 “%f” 或 “%e”
05. 变量:字节数统计
06. 变量:浮点数 float 的最小/大值
01. 变量:定义
未定义变量,直接引用变量时:
- 出现报错:未定义标识符 "a"
- 解决报错:先定义变量


02. 变量:初始化
只定义变量,未初始化变量时,引用变量时:
- 出现报错:C6001: 使用未初始化的内存 "a"。
- 解决报错:定义变量时,同时初始化变量


03. 变量:参数传递
已定义变量,并初始化变量时,传递变量参数时:
- 出现报错:C6271: 传递给 "printf" 的额外参数
- 解决报错:使用占位符 “%d”,需注意传递的参数不能超过格式字符串中占位符的数量
【报错解决详解】
当在调用
printf函数时,如果传递的参数超过了格式字符串中占位符的数量,就会出现C6271错误,这个错误是指传递给printf的额外参数:
- 例如,假设定义了一个整数变量
num并初始化为10,然后想将其打印出来,以下是一个正确的示例,因为格式字符串"%d"中有一个占位符%d来接收整数参数num的值,正确代码如下所示:int num = 10; printf("Number: %d\n", num);
- 然而,如果在格式字符串中只有一个占位符
%d,但传递了多个参数给printf,就会触发C6271错误,下述代码中,传递了两个参数num和20给printf函数,但是在格式字符串中只有一个%d占位符。这就导致了额外的参数无法被正确处理,从而引发了错误,错误代码如下所示:int num = 10; printf("Number: %d\n", num, 20);- 为了解决这个问题,需要确保传递给
printf函数的参数的数量与格式字符串中的占位符的数量一致,或者确保占位符的数量与要打印的参数的数量相匹配。例如,如果想将两个整数打印出来,需要使用两个占位符%d,这样就不会触发C6271错误了,正确代码如下所示:int num1 = 10; int num2 = 20; printf("Numbers: %d, %d\n", num1, num2);


04. 变量:格式说明符
① 占位符 “%d” 改为格式说明符 “%llu”
已定义变量,并初始化变量时,传递变量参数时:
- 出现报错:C6328: 大小不匹配: 已将 “unsigned _ _int64" 作为 _Param_(2) 传递,但需要使用 "int" 来调用 "printf"。
- 解决报错:解决参数类型不匹配错误,修改 “%d” 为 “%llu”,使用
%llu格式说明符来与unsigned __int64类型匹配,其中llu表示无符号长整型数。
【报错解决详解】
- C6328 错误是由于参数类型不匹配引起的。
- 在代码中,
sizeof(int)返回一个unsigned __int64类型的值,但是传递给printf函数的格式字符串中使用了%d,这会导致参数类型不匹配错误。- 为了解决这个问题,可以使用
%llu格式说明符来与unsigned __int64类型匹配,其中llu表示无符号长整型数。- 以下是修正后的代码:
#include <stdio.h>int main() {int a = 0;float b = 0;double c = 0;printf("变量名(中文):%d\n", a);printf("变量值(数字):%llu\n" , sizeof(int)); }- 修复后,
printf函数的参数类型与格式说明符%llu相匹配,因此就不会触发 C6328 错误了。


② 占位符 “%d” 改为格式说明符 “%f” 或 “%e”
已定义变量,并初始化变量时,传递变量参数时:
- 出现报错:C6273: 调用 "printf" 实际类型: "double" 时需要整数时,非整数传递为_Param_(2)。
- 解决报错:解决参数类型不匹配错误,修改占位符 “%d” 改为 “%f” 或 “%e” 来打印
FLT_MIN和FLT_MAX,这两个值是浮点类型的,而不是整型,应该使用%f或%e格式说明符来打印浮点数
【报错解决详解】
- 报错信息提示的问题出现在以下两行代码:
printf("打印浮点数 float 的最小值:%d\n", FLT_MIN); printf("打印浮点数 float 的最大值:%d\n", FLT_MAX);- 错误原因是使用错误的格式说明符
%d来打印FLT_MIN和FLT_MAX,这两个值是浮点类型的,而不是整型。应该使用%f或%e格式说明符来打印浮点数。- 修改后的代码中,使用
%f替代%d格式说明符来打印浮点数FLT_MIN和FLT_MAX,从而解决了格式化输出的错误。修改后的代码如下:#include<stdio.h> #include <cfloat>int main() {int a = 0; // 定义并初始化整型变量 afloat b = 1.5; // 定义并初始化浮点型变量 bdouble c = 5.78; // 定义并初始化双精度浮点型变量 c/* 参数传递 */printf("打印变量 a 的值:%d\n", a); // 打印变量 a 的值,使用 %d 格式说明符打印整型值/* 字节数统计 */printf("打印 int 的字节数:%llu\n", sizeof(int)); // 使用 sizeof 运算符获取 int 类型的大小并使用 %llu 格式说明符打印无符号长整型值printf("打印 float 的字节数:%llu\n", sizeof(float)); // 使用 sizeof 运算符获取 float 类型的大小并使用 %llu 格式说明符打印无符号长整型值printf("打印 double 的字节数:%llu\n", sizeof(double)); // 使用 sizeof 运算符获取 double 类型的大小并使用 %llu 格式说明符打印无符号长整型值/* 浮点数的最小/大值 */printf("打印浮点数 float 的最小值:%f\n", FLT_MIN);printf("打印浮点数 float 的最大值:%f\n", FLT_MAX);return 0; }



05. 变量:字节数统计
【示例代码】
#include<stdio.h>int main() {int a = 0; // 定义并初始化整型变量 afloat b = 1.5; // 定义并初始化浮点型变量 bdouble c = 5.78; // 定义并初始化双精度浮点型变量 c/* 参数传递 */printf("打印变量 a 的值:%d\n" , a); // 打印变量 a 的值,使用 %d 格式说明符打印整型值/* 字节数统计 */printf("打印 int 的字节数:%llu\n" , sizeof(int)); // 使用 sizeof 运算符获取 int 类型的大小并使用 %llu 格式说明符打印无符号长整型值printf("打印 float 的字节数:%llu\n", sizeof(float)); // 使用 sizeof 运算符获取 float 类型的大小并使用 %llu 格式说明符打印无符号长整型值printf("打印 double 的字节数:%llu\n", sizeof(double)); // 使用 sizeof 运算符获取 double 类型的大小并使用 %llu 格式说明符打印无符号长整型值 }【代码详解】
- 包含头文件
<stdio.h>,这是一个标准输入输出库文件,其中包含了printf函数的声明。- 在
main函数中,定义了整型变量a并初始化为0,定义了浮点型变量b并初始化为1.5,定义了双精度浮点型变量c并初始化为5.78。- 使用
printf函数分别打印了变量a的值、int类型的大小、float类型的大小、double类型的大小;分别使用%d、%llu、%llu、%llu格式说明符和相应的sizeof运算符获取变量的值和类型的大小。【输出结果】
- 在大多数编译器中,
sizeof(int)表达式返回的结果是int类型在当前编译环境中的字节数。- 通常情况下,
int类型在大部分平台上占据 4 个字节(32 位),但这并不是绝对的,它可能会在不同的平台和编译器上有所不同。- 因此,当运行
sizeof(int)时,输出结果为 4,说明在当前编译环境中int类型占据 4 个字节。- 需要注意的是,
sizeof运算符返回的是无符号整型值,因此在使用%llu格式说明符打印sizeof(int)的结果时,需要使用无符号长整型 (unsigned long long) 格式来匹配参数的类型。打印变量 a 的值:0 打印 int 的字节数:4 打印 float 的字节数:4 打印 double 的字节数:8

06. 变量:浮点数 float 的最小/大值
【示例代码】
#include<stdio.h> #include <cfloat>int main() {int a = 0; // 定义并初始化整型变量 afloat b = 1.5; // 定义并初始化浮点型变量 bdouble c = 5.78; // 定义并初始化双精度浮点型变量 c/* 参数传递 */printf("打印变量 a 的值:%d\n", a); // 打印变量 a 的值,使用 %d 格式说明符打印整型值/* 字节数统计 */printf("打印 int 的字节数:%llu\n", sizeof(int)); // 使用 sizeof 运算符获取 int 类型的大小并使用 %llu 格式说明符打印无符号长整型值printf("打印 float 的字节数:%llu\n", sizeof(float)); // 使用 sizeof 运算符获取 float 类型的大小并使用 %llu 格式说明符打印无符号长整型值printf("打印 double 的字节数:%llu\n", sizeof(double)); // 使用 sizeof 运算符获取 double 类型的大小并使用 %llu 格式说明符打印无符号长整型值/* 浮点数 float 的最小/大值: %f 格式 */printf("打印浮点数 float 的最小值:%f\n", FLT_MIN); // 打印浮点数 float 的最小值,使用 %f 格式说明符打印浮点数值printf("打印浮点数 float 的最大值:%f\n", FLT_MAX); // 打印浮点数 float 的最大值,使用 %f 格式说明符打印浮点数值/* 浮点数 float 的最小/大值: %e 格式 */printf("打印浮点数 float 的最小值:%e\n", FLT_MIN); // 打印浮点数 float 的最小值,使用 %e 格式说明符打印浮点数值printf("打印浮点数 float 的最大值:%e\n", FLT_MAX); // 打印浮点数 float 的最大值,使用 %e 格式说明符打印浮点数值 }【代码详解】
- 包含了头文件
<stdio.h>和<cfloat>分别用于输入输出和浮点数相关常量。- 在
main函数中,定义了整型变量a并初始化为0,定义了浮点型变量b并初始化为1.5,定义了双精度浮点型变量c并初始化为5.78。- 使用
printf函数打印了变量a的值,并使用%d格式说明符来打印整型值。- 使用
printf函数分别打印了int类型、float类型和double类型的字节数,并使用%llu格式说明符和sizeof运算符来获取并打印无符号长整型值。- 使用
printf函数分别打印了浮点数float类型的最小值和最大值,并使用%f格式说明符来打印浮点数。- 使用
printf函数分别以科学计数法的格式打印了浮点数float类型的最小值和最大值,并使用%e格式说明符来打印浮点数。【输出结果】
%f是格式说明符,用于打印浮点数的值。%e是格式说明符,用于以科学计数法打印浮点数的值。- 科学计数法:1.175494e-38 表示为 1.175494 乘以 10 的 -38 次方
- 科学计数法:3.402823e+38 表示为 3.402823 乘以 10 的 38 次方
打印变量 a 的值: 0:这是因为变量a被初始化为整型的默认值 0。打印 int 的字节数: 4:int类型通常占用 4 个字节(32 位)的内存空间。打印 float 的字节数: 4:float类型通常占用 4 个字节(32 位)的内存空间。打印 double 的字节数: 8:double类型通常占用 8 个字节(64 位)的内存空间。打印浮点数 float 的最小值: 0.000000:FLT_MIN是float类型的最小正非零值,通常为 0。打印浮点数 float 的最大值: 340282346638528859811704183484516925440.000000:FLT_MAX是float类型的最大值,通常是一个极大的数。打印浮点数 float 的最小值: 1.175494e-38:这是使用科学计数法表示的float类型的最小正非零值。打印浮点数 float 的最大值: 3.402823e+38:这是使用科学计数法表示的float类型的最大值。打印变量 a 的值: 0 打印 int 的字节数: 4 打印 float 的字节数: 4 打印 double 的字节数: 8 打印浮点数 float 的最小值: 0.000000 打印浮点数 float 的最大值: 340282346638528859811704183484516925440.000000 打印浮点数 float 的最小值: 1.175494e-38 打印浮点数 float 的最大值: 3.402823e+38

相关文章:
【C++ 程序设计】实战:C++ 变量实践练习题
目录 01. 变量:定义 02. 变量:初始化 03. 变量:参数传递 04. 变量:格式说明符 ① 占位符 “%d” 改为格式说明符 “%llu” ② 占位符 “%d” 改为格式说明符 “%f” 或 “%e” 05. 变量:字节数统计 06. 变量&a…...
微软对Visual Studio 17.7 Preview 4进行版本更新,新插件管理器亮相
近期微软发布了Visual Studio 17.7 Preview 4版本,而在这个版本当中,全新设计的扩展插件管理器将亮相,并且可以让用户可更简单地安装和管理扩展插件。 据了解,目前用户可以从 Visual Studio Marketplace 下载各式各样的 VS 扩展插…...
Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?
Kafka怎么做到避免消息重复消费的? 消费者组是什么? 消费者: 1、订阅Topic(主题) 2、从订阅的Topic消费(pull)消息, 3、将消费消息的offset(偏移量)保存在K…...
MongoDB 的增、查、改、删
Monogo使用 增 单条增加 db.member.insertOne({"name":"张三","age":18,"create":new Date()}) db.member.insert({"name":"李四1","age":18,"create":new Date()}) db.member.insertOne(…...
mysql常用操作命令
mysql常用操作命令 mysql:单进程多线程模型,一个SQL语句无法利用多个cpu core 一:基本命令 0.查看当前连接数 show global status like Thread$; show variables like "%timeout%"; show variables like "log_%";1.查看当前连接状态 show processlist…...
数学建模常见模型汇总
优化问题 线性规划、半定规划、几何规划、非线性规划、整数规划、多目标规划(分层序列法)、动态规划、存贮论、代理模型、响应面分析法、列生成算法 预测模型 微分方程、小波分析、回归分析、灰色预测、马尔可夫预测、时间序列分析(AR MAMA.RMA ARTMA LSTM神经网络)、混沌模…...
C#使用LINQ查询操作符实例代码(二)
目录 六、连表操作符 1、内连接2、左外连接(DefaultIfEmpty)3、组连接七、集合操作 八、分区操作符 1、Take():2、TakeWhile():3、Skip():4、SkipWhile():九、聚合操作符 1、Count: 返回集合项数。 2、LongCount&…...
jenkinsfile小试牛刀
序 本文主要演示一下如何用jenkinsfile来编译java服务 安装jenkins 这里使用docker来安装jenkins docker run --name jenkins-docker \ --volume $HOME/jenkins_home:/var/jenkins_home \ -p 8080:8080 jenkins/jenkins:2.416之后访问http://${yourip}:8080,然后…...
C++ xmake构建
文章目录 一、xmake.lua二、xmake常用语句 一、xmake.lua --xmake.luaset_project("XXX")add_rules("mode.debug", "mode.release") set_config("arch", "x64")if is_plat("windows") then -- the release modei…...
推荐带500创作模型的付费创作V2.1.0独立版系统源码
ChatGPT 付费创作系统 V2.1.0 提供最新的对应版本小程序端,上一版本增加了 PC 端绘画功能, 绘画功能采用其他绘画接口 – 意间 AI,本版新增了百度文心一言接口。 后台一些小细节的优化及一些小 BUG 的处理,前端进行了些小细节优…...
wps图表怎么改横纵坐标,MLP 多层感知器和CNN卷积神经网络区别
目录 wps表格横纵坐标轴怎么设置? MLP (Multilayer Perceptron) 多层感知器 CNN (Convolutional Neural Network) 卷积神经网络 多层感知器MLP,全连接网络,DNN三者的关系 wps表格横纵坐标轴怎么设置? 1、打开表格点击图的右侧…...
rdb和aof
RDB持久化:原理是将Redis在内存中的数据库记录定时dump到磁盘上的RDB持久化AOF持久化:原理是将Redis的操作日志以追加的方式写入文件 rdb: 开启方式:客户端可以通过向Redis服务器发送save或bgsave命令让服务器生成rdb文件&#…...
TCP网络通信编程之网络上传文件
【图片】 【思路解析】 【客户端代码】 import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException;/*** ProjectName: Study* FileName: TCPFileUploadClient* author:HWJ* Data: 2023/7/29 18:44*/ public class TCPFil…...
Java中对Redis的常用操作
目录 数据类型五种常用数据类型介绍各种数据类型特点 常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 在Java中操作RedisRedis的Java客户端Spring Data Redis使用方式介绍环境搭建配置Redis数据源编写配置类,创建RedisTempla…...
链路追踪设计
...
Golang之路---02 基础语法——常量 (包括特殊常量iota)
常量 //显式类型定义const a string "test" //隐式类型定义const b 20 //多个常量定义 const(c "test2"d 2.3e 27)iota iota是Golang语言的常量计数器,只能在常量表达式中使用 iota在const关键字出现时将被重置为0,const中每新…...
Pytest学习教程_装饰器(二)
前言 pytest装饰器是在使用 pytest 测试框架时用于扩展测试功能的特殊注解或修饰符。使用装饰器可以为测试函数提供额外的功能或行为。 以下是 pytest 装饰器的一些常见用法和用途: 装饰器作用pytest.fixture用于定义测试用例的前置条件和后置操作。可以创建可重…...
redis的如何使用
1、redis的使用 1.1windows安装 安装包下载地址:Releases dmajkic/redis GitHub 1.2 redis中常使用的几个文件 1.3 redis中运行 双击redis-server,既可以运行。 1.4使用redis客户单来连接redis 1.5redis的常用指标 redis-serve 服务端,端口号&am…...
MyBatis(二)
文章目录 一.MyBatis的模式开发1.1 定义数据表和实体类1.2 配置数据源和MyBatis1.3 编写Mapper接口和增加xxxMapper.xml1.4 测试我们功能的是否实现. 二. Mybatis的增删查改操作2.1 单表查询2.2 多表查询三.动态SQL的实现3.1 什么是动态SQL3.2 动态SQL的使用if标签的使用trim标…...
【【51单片机AD转换模块】】
代码是简单的,板子是坏的,电阻是识别不出来的 main.c #include <REGX52.H> #include "delay.h" #include "LCD1602.h" #include "XPT2046.h"unsigned int ADValue;void main(void) {LCD_Init();LCD_ShowString(1,1…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...





