栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】变量与数据类型

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】变量与数据类型

文章目录
  • 说在前面
  • 数据类型
    • 基本类型
  • 声明及使用变量
  • 类型转换
    • 自动类型转换
    • 强制类型转换
  • 命名空间

说在前面

变量 值可以改变的量(相对应的值不可变的量是常量,用const定义),是计算机中一块特定的内存空间,由一个或多个连续的字节组成,那么变量需要占多大的内存空间,那么就需要数据类型 来确定。

常量在定义时必须初始化,并且初始化之后不允许改变常量的值
如const int num = 1;
字面值常量,就是定义变量时,等号右边的值,可以是整型(以1-9开头默认十进制,以0开头默认八进制,以0x开头默认十六进制)、浮点型、字符型、字符串型等

数据类型

整型从最小到最大依次是:bool 浮点型可以表示小数以及比整型表示值更大的数,分别是float、double和long double

基本类型

声明及使用变量
  • 变量名不要重复,同时变量名定义可以是大小写字母、数字以及下划线,并且第一个字符必须是字母或者下划线或者$,同时不能使用关键字来命名变量
  • 一条语句可以声明多个类型相同的变量
  • 声明变量并初始化也可以先声明后初始化

auto原本是C语言中的一个关键字,很少使用。C++11重新定义了auto的含义,让编译器能够根据初始值的类型推断变量的类型。在初始化声明中,如果使用auto关键字,而不指定变量的类型,编译器将把变量的类型设置成与初始值相同的类型。

声明并使用单精度浮点型变量
float 位数为32位,4个字节

#include 
//使用函数库进行计算
#define _USE_MATH_DEFINES
#include 
using namespace std;
int main()
{
    float radius = 5;
    float height = 10;
    float volume;
    volume = M_PI * pow(radius, 2) * height;
    cout.precision(10); //设置打印数字的最大位数,可以用于观察精度
    cout << fixed; //当打印的数字较大时,默认使用科学计数法进行显示,fixed强制展开显示
    cout << scientific; //设置是用科学计数法显示
    cout << volume << endl;
}

声明并使用双精度浮点型变量
double 位数为64位,8个字节

#include 
//引入格式操作符库
#include 
using namespace std;
int main()
{
    //打印菜单
    double price1 = 30.9;
    double price2 = 9.9;
    double price3 = 12.9;
    int count1 = 10;
    int count2 = 11;
    int count3 = 12;
    cout << fixed; // 以小数形式显示
    cout.precision(2); //设置精度两位小数
    cout << left; //左对齐
    cout << "tt菜单" << endl;
    cout << "---------------------------------" << endl;
    cout << setw(16) << "菜名" << setw(8) << "价格" << setw(8) << "数量" << endl;
    cout << setw(16) << "红烧狮子头" << setw(8) << price1 << setw(8) << count1 << endl;
    cout << setw(16) << "热干面" << setw(8) << price2 << setw(8) << count2 << endl;
    cout << setw(16) << "西红柿炒蛋" << setw(8) << price3 << setw(8) << count3 << endl;
}

使用格式操作符设置数值的输出格式

使用字符型变量
char 位数为8为,1个字节

#include 
using namespace std;
int main()
{
    //单引号中只能有一个字符,如果赋值多个字符,那么后面的字符会覆盖前面的字符
    char c = 'a';
    //根据补码反码原理,第一位是符号位,所以有+0和-0之分,-0作为-128
    cout << CHAR_MAX << CHAR_MIN;
    cin >> c;
    //char其实是一种特殊的整型
    //转大写,或者减空格
    c = c - 32;
    cout << c << endl;
    
}

使用字符串变量

#include 
using namespace std;
int main()
{
    string str1; //定义并初始化一个空字符串
    str1 = "abc";
    string str2(str1); //一种面向对象的写法,str2是str1的副本
    string str3(8, '8'); //由8个连续的8组成
    cout << str1 << "的长度为" << str1.size() << endl;
    cout << str2 << "的长度为" << str2.size() << endl;
    cout << str3 << "的长度为" << str3.size() << endl;
    cout << str1.empty() << endl;//判断是否为空
    cout << str1[1] << endl;//输出字符串第二个元素
    cout << str1 + str2 << endl;//拼接字符串
}

ASCII码

类型转换 自动类型转换

原则: 把表示范围小的类型的值转换到表示范围大的类型的值。反之,会存在损失精度问题(如double转float,float转整型,较大值整型转换为较小值整型)。
自动转换场景

  • 将一种算术类型的值赋给另一种算术类型的变量时,C++将对值进行转换;
  • 表达式中包含不同的类型时;
  • 将参数传递给函数时;

转换顺序

bool→char→short→int→long→long long
float→double→long double
强制类型转换

语法:(类型名)变量或数值;类型名(变量或数值)

以{}的方式初始化时进行转换(列表初始化),转换要求会更为严格,编译时会严格检查类型转换范围

命名空间

命名空间是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的命名冲突。命名空间实际上就是一个程序设计者命名的内存空间,设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。一般的使用规则:命名空间名::命名空间成员名。

#include 
using namespace std;
namespace menu
{
    string name = "酸辣土豆丝";
    float price = 15;
    string desc = "微辣";
}
int main()
{
    cout << "菜名:" << menu::name << endl;
}

标准命名空间std
标准C++库里的所有标识符都是在一个名为std的命名空间里定义的,或者标准头文件(如iostream)中函数、类、对象和类模板都是在命名空间std中定义的。这样,在程序中要使用std作为限定,using namespace std;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号