C++11增加了两个新的变量用来处理字符串,分别是char_16和char_32,两者都是无符号的字符型,但是在赋值的时候必须使用特殊的表示,char_16是用u'c'中的u做标识,而char_32使用U作为标识。
const的修饰变量的一般约定:使用const定义的变量,如const int Month=20;其中的Month为了加以区分,一般都是使用手写大写字母,或者以k打头,例如kmonth。
使用float时一定要注意,它的有效位(就是出现第一个非0数字后的位数)最长只有6位,其他的位数就会被省去,如下面的代码
#include <iostream> using namespace std; int main() { float a = 62.48684f; float b = 61884842.48684f; float c = 612.48f; float d = b * 10; cout << "a=" << a << endl; cout << "b=" << b << endl; cout << "c=" << c << endl; cout << "d=" << d << endl; cin.get(); return 0; }
输出的值可能并非预料的那样:
下面将写出double等详细的有效长度和数值范围
类型 | 有效位长度 | 占用字节长度 | 数据最大最小范围 |
float | 6 | 24 | -37e10~~~38e10 |
double | 15 | 53 | -307e10~~308e10 |
long double | 18 | 64 | -4931e10~4932e10 |
关于复杂变量
如结构体等的复杂变量,这里只介绍一种容易被大家忽略的事情:
struct strA
{int a,char b,double c};
扫描二维码关注公众号,回复:
481836 查看本文章
其中的strA相当于一种新的变量类型,在使用的时候可以strA tmpstrA; strA tmpstrB;等声明多个变量,但是有一种用法,如下面:
struct
{int a,char b,double c} strA;
这种省略了变量类型,而strA则成为新生成的变量名,也就是说strA本身已经是一个变量了,不能再使用strA tmpstrA这种形式。这样省略变量类型,就会导致只能有一个这种类型的结构体。还有一种其他用法,顺便再strA后边增加*pstrA,表示这个没有变量类型的结构体的指针为pstrA。