简谈数据类型

       C++融合了三种编程方式:过程性编程,面向对象编程,模板支持的泛型编程。
       C++是在C的基础上发展而来,所以C++包含C中的很多特性,而C的后面的C99等标准里面新增了一点对C++的支持,在学习C/C++的过程中,要尽量区分两个各有的内容。在C++中,代码行的注释是由//引出的,而C是在/* */中包含的,两种语言都支持这样的注释。C++的头文件名称较C也有很多不同,并且新增了名称空间。总体来看,C++最明显的地方就在于对象和类的概念,以及数据隐藏、继承、多态、友元等的特性,笔者初读《C++ Primer Plus》一书时,对这些新概念搞的一头雾水,不过还是最终看完了整本书,虽然对C++有了一点了解,也能简单的使用类什么的,但这样的基础远远不够牢固,在笔者学习《算法导论》时,很多伪代码想要用C++实现时显得很吃力,这本C++的经典书目值得反复翻看,所以今次笔者重新拜读次数,巩固自己的基础,为以后学习更多的内容做好充分的准备。此次先来总结C++数据类型的一点内容
       C++的内置类型分两组:基本类型和复合类型,基本类型即整数和浮点数,复合类型是在基本类型的基础上创建的,包含数组、字符串、指针和结构。顾名思义,整数类型存放的都是整数数据,浮点类型存放的都是有小数的数据。

基本类型

整数类型

       整数类型中根据所占内存位的不同有不同的类型,C++中规定short至少16位,int至少和short一样长,long至少32位,且至少与int一样长,long long至少64位,且至少与long一样长。具体的长度可以用sizeof运算符得到,在头文件climits中包含了关于整型限制的信息。有三种显示整数的方式:八进制、十进制、十六进制,可以使用控制符oct、dec、hex来分别指示三种方式的显示。

std::cout << hex;
std::cout << oct;

       在使用char类型时,其可以表达的字符是有限个,而我们可能用到的字符个数远远大于这个限制,所以有了wchar_t,C++11新增char16_t,char32_t,可以用来表示更多的字符。
对于无法从键盘中输入的字符,可以使用转义序列,通过\实现特殊字符的显示。

浮点类型

       另一种基本类型就浮点数,计算机将这样的值分成两部分存储,一部分表示值,另一部分表示对值进行放大或缩小。C++有三种浮点类型:float、double、long double,对它们有效位数要求float至少32位,double至少48位,且不少于float,long double至少和double一样多,可以在cfloat头文件中找到系统的限制。
       有时候我们需要使用常量进行计算或者赋值,常量的类型由于没有声明编译器不知道开发者希望用的类型是什么,可以通过添加后缀显示的告诉编译器。

1.234f
1.23E20F
201L
2999UL

其余内容

       限定符const,声明常量时使用,其值初始化之后不能再改变,使用const时必须在声明时就对常量初始化。

const int pi = 3.1415926;

       C++中对于变量的初始化新增了一种方式:列表初始化{ },对数据的转换比较严格,不允许缩窄,可以使用“=”,也可以忽略不写,大括号内可以不包含任何东西,这时变量将初始化为0。

int i = {7};
int i {7};
int i { };

       五种基本的算数运算符:+、-、*、/、%,其中特别注意%的两个操作数必须是整数。

复合类型

       当基本类型不能满足我们的需要时,复合类型就显得很重要了。

数组

       数组是一种数据格式,能够存储多个同类型的值,C++数组从0开始编号,使用数组时需要注意下标值不要超出范围,编译器不会检查使用的下标是否有效,只有在定义数组时才能进行初始化,不能将数组赋给另一个数组。

int a[3] = {2, 3, 4};
int b[3] {2, 3, 4};
int c[3] { };

字符串

       C++字符串有两种:C风格字符串和基于string类的字符串。

C风格字符串

       C风格的字符串具有一种特殊的性质:以空字符结尾,空字符被写作\0。其ASCII码为0,用来标记字符串的结尾。可以用引号括起来的字符串进行赋值,这种字符串称为字符串常量或字符串字面值,这种方式隐式包含了结尾的空字符串,不需要显示的包含。使用strlen()来计算数组中字符串的长度,不把空字符计算在内。进行字符串的输入时,通过getline()和get()来进行整行的输入,需要注意getline()读取换行符并丢弃,而get()将换行符保留在输入序列中。strcpy()将字符串复制到字符数组中,strcat()将字符串附加到字符串末尾。

char a[] = “test”;
int n = strlen(a);
strcpy(a, b);
strcat(a, b);
cin.getline(name, size);
cin.get(name, size);
string类

       使用string类型的变量,需要包含string头文件,相对于C风格字符串,string类相互赋值,可以使用“+”和“=”运算符来完成strcpy和strcat的功能。string不需要指定字符串的大小,string可以自动调整大小。

std::string str;
str1 = str2;
str3 = str1 + str2;

       当需要在屏幕上输出字符串字面值时,可能其中含有“””,可以使用转义字符来输出,或者使用前缀R来表示原始字符串:R”+(…)+”。也可以自定义定界符。

std::cout << “a,\”b\”,c,\”d\”,e”;  //a,”b”,c,”d”,e
std::cout << R”(a,”b”,c,”d”,e)”;
std::cout << R”+*( a,”b”,c,”d”,e)*+”;

结构

       使用struct关键字声明结构,使用一个结构存储多种类型的数据,不同于C,C++可以在声明结构变量是省略struct。

struct student
{
  int ID;
  std::string name;
};
student stu { 0101, “Avin”};
stu.ID = 0101;
std::cout << stu.name;

共用体

       使用union声明共用体结构,不同于struct存储多种变量,union只能存储其中一种类型。

union test
{
  int a;
  double b;
};

枚举

       使用enum声明枚举类型,是一种创建符号常量的方式,在默认情况下,将整数复制给枚举量,第一个枚举量的值为0,第二个枚举量的值为1,依次类推;也可以使用显示的方式指定整数值来覆盖默认的声明值,需要注意枚举变量的值只能是整数。


       此外,还有一种类型叫指针,关于指针的内容我单独去总结,不放在这里谈论,指针的使用是C/C++的精华所在,合理高效安全使用指针是每个程序员必备的技能,鉴于此,笔者将在下一篇总结中好好的分析指针的内容。

内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模的具体步骤,包括创建新模、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值