c++学习:1.变量定义

2023-11-04

1.列表初始化

c++语言定义了初始化的好几种形式,例如:

int a=0;
int a={0};
int a{0};
int a(0);

        使用花括号初始化是c++11标准,当用于内置类型的变量时,该种初始化(花括号)有一个重要特点:如果我们使用列表初始化且初始值存在丢失信息的风险,编译器会报错,例如:

double pi=3.1415926;
int a={[pi},b{pi}; //错误,小数点后数据丢失
int c=(pi),d(pi);//正确

 2.默认初始化

        定义变量是没有初值,变量会被默认初始化。默认值由变量类型和变量位置共同确定:定义于任何函数体外的变量被初始化为0,定义于函数体内部的内置类型变量将不被初始化。一个不被初始化的内置类型的变量值是未定义的,如果试图拷贝或者以其他形式访问此类型值将引发错误(真的很难察觉)。

例如:在test()和test2()函数中定义a,b,默认初始化随机值:

#include <iostream>
using namespace std;
void test();
void test2();
int main(){
    test();
    test2();
}
void  test(){
    int a;
    cout<<a<<endl;
}
void  test2(){
    double b;
    cout<<b<<endl;
}

输出结果:
2
4.24399e-314

Process finished with exit code 0

将定义放在函数体外,默认变量初始化是0。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void test();
void test2();
int a;
double b;

int main(){
    test();
    test2();
}
void  test(){   
    cout<<a<<endl;
}
void  test2(){   
    cout<<b<<endl;
}

输出结果:
0
0

Process finished with exit code 0

        未初始化的变量含有不确定的值,使用未初始化的变量的值很容易引发程序错且很难调试,因为编译器只是对部分未初始化的变量行为作出警告,但严格来说,编译器并未要求检查此类错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++学习:1.变量定义 的相关文章

随机推荐

  • python进阶:python高级编程技巧(中)

    1 通过实例方法名字的字符串调用方法 getattr object name default None 得到一个对象中的name方法 如果没有则返回默认值 map func iterables 第一个传递函数名称 第二个传递一个可迭代的对象
  • 世界首位 AI 机器人「女老板」:24 小时待命,全年无休!

    整理 朱珂欣 出品 CSDN程序人生 ID coder life 作曲 写稿 编代码 眼看 AI 轻松胜任种种工作 如今还成了 老板 近日 波兰酒精饮料公司 Dictador 宣布 已聘请一位机器人担任 CEO 并称 这是全球公司中第一位
  • JS-----数据结构与算法(1)

    目录 一 初识数据结构与算法 1 常见的数据结构 2 算法 二 数组结构 数据类型分类 1 创建一个数组 2 数组的 length 3 数组的索引 4 数组的常用方法 数组常用方法之 push 数组常用方法之 pop 数组常用方法之 uns
  • 线程池创建线程

    定义 使用池化技术来管理和使用现成的技术 就叫做线程池 线程池的优势 总体来说 线程池有如下的优势 1 降低资源消耗 通过重复利用已创建的线程降低线程创建和销毁造成的消耗 2 提高响应速度 当任务到达时 任务可以不需要等到线程创建就能立即执
  • spring IOC 控制反转详解生命周期

    spring IOC 控制反转 通过Spring提供的IoC容器 可以将对象间的依赖关系交由Spring进行控制 避免硬编码所造成的过度程序耦合 用户也不必再为单例模式类 属性文件解析等这些很底层的需求编写代码 可以更专注于上层的应用 AO
  • R手册(Common)--R语言基础包

    文章目录 环境设置 输入输出 文件操作 进度条 数据创建 数据选取及数据信息 列联表 内置常量 数学 矩阵运算 模型 其他函数 R语言基础包 base stats 环境设置 系统函数 函数 说明 options 显示或设置当前选项 digi
  • maven项目引入外部jar包,并实现打包

    1 在项目模块的src目录下创建 lib 文件 将要引用的jar包放到lib下 2 在该项目模块内的pom xml内引入依赖
  • 向svn服务器添加新项目

    确保电脑上已经安装了TortoiseSVN客户端 在之前已经从svn上checkout代码下来的文件夹中 点击右键 TortoiseSVN gt Repo browser 这样就可以看到整个svn服务器的目录了 得到svn服务器目录后 就可
  • ZooKeeper实战面试题(2021.11)

    文章目录 ZooKeeper是什么 ZooKeeper 提供了什么 Zookeeper 文件系统 Zookeeper 怎么保证主从节点的状态同步 恢复模式 广播模式 四种类型的数据节点 Znode Zookeeper Watcher 机制
  • 关于 vue 做文件导出的总结

    关于文件导出有2中方法 一种是后端写接口 前端调用 一种是纯前端做 下面分别介绍这两种方法 一 后端做下载 导出功能 前端调接口 注意 需要指定服务器响应的数据类型 gt responseType blob 导出 下载 import req
  • Java常用对象API——Map集合

    java util 接口 Map
  • Kettle的表或视图不存在问题【已解决】

    1 问题描述 在用Kettle做job的时候 报如下的错 2019 11 18 14 28 42 OUT FICP PARAM DATA 2 0 ERROR version 8 3 0 0 371 build 8 3 0 0 371 fro
  • Ubuntu常用终端命令

    Ubuntu常用终端命令 1 显示任务管理器 ps aux 2 kill进程 kill PID号 3 后台运行程序 nohup python3 xxxx py 4 查看文件列表 ls 5 进入文件夹 cd 文件夹名 6 解压与压缩命令 6
  • 数字水印-期末复习

    期末复习时一边复习 自学 一边记录所得 有点儿乱但能明白数字水印是个啥的话对着这个复习还是比较有用 RSA 可用于加密 数字签名 密钥分配 PGP PKI等 对RSA的主要支持和批评 形式简单 易于理解 研究深入 支持广泛 既能用来加密 又
  • 静态vector容器成员变量的定义和初始化

    想要定义一个静态容器成员变量 保存数据以便后面共享 1 要现在 h文件的类内先声明该成员 class A public static const int vecSize COMM NUMBERS 整形静态常量可以直接初始化 static v
  • 解决windows10资源管理器无限刷新、高占用的解决方法

    首先是我使用Edge添加pdf笔记的时候 Edge浏览器自动崩溃 我就重新打开 于是就开始了疯狂的无限刷新 并且cpu高占用 如果不是因为这个原因导致的无限刷新 那么这个方法或许不适合 这是一个关于浏览器读取pdf的一个bug 具体解决方案
  • 【Node.js安装与配置(详细步骤)及vue项目配置】

    Node js安装与配置 详细步骤 前言 下载Node js 安装Node js 添加环境变量 新建 node global 和 node cache 两个文件夹 查看是否配置成功 可能由于权限问题导致不成功 需要设置文件权限 vue项目配
  • 取消请求、axios实现abort

    缘由 工作项目使用fetch 暂无法提供abort 取消请求 功能 虽然官方说可以使用 AbortSignal对象的实例 将允许通过AbortController与fetch请求通信或者终止fetch 稍微复杂了也不好封装 于是将目光转回a
  • 香港服务器部署网站慢,用香港云主机服务器网站慢怎么解决?

    用香港云主机服务器搭建的网站出现了卡顿慢的情况 要怎么解决呢 这是服务器的问题吗 服务器之家来为各位用户进行一个简要的分析 希望对大家有帮助 1 检查本地客户端 本地客户端访问网络诊断分析系统 测试本地访问各域名的速度 根据测试结果 确认本
  • c++学习:1.变量定义

    1 列表初始化 c 语言定义了初始化的好几种形式 例如 int a 0 int a 0 int a 0 int a 0 使用花括号初始化是c 11标准 当用于内置类型的变量时 该种初始化 花括号 有一个重要特点 如果我们使用列表初始化且初始