【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…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...





