萌新不看会后悔的C++基本类型总结(二)
文章目录
0. 浮点数关于有效范围一些问题上一篇 1. C++如何确定常量的类型C++如何确定常量的类型,老规矩,我们举个例子:
区别在于#define 不必定义该常量属于什么类型,是int,还是long int,而const定义的常量必须指明类型,至于哪种定义常量的方法好?我们推荐使用第二种,至于为什么,后面会说,我们现在主要来讨论C++如何确定常量的类型,假设我们就使用#define定义了 MAX = 123456789怎么一个常量,那么C++会如何确定常量类型呢?
来看运行结果: 结果是4,说明C++将MAX保存为int类型。 如果我们把这个数变一下:
运行结果: 我们将MAX 后面加了两个LL,还记得LL表示什么吗?对,表示的是long long类型。
以上说的都是对于十进制的存储方式,而对于八进制或者是十六进制,它们的存储方式为int,unsigned int,long,unsigned long,long long或者是unsigned long long。至于为什么会使用无符号的类型来存储,这是因为十六进制常用来表示内存地址,内存地址是没有符号的,因此unsigned int 比 long更适合来表示十六位的地址。 2. const除了修饰常量还能干什么下面来说说const,const除了上面的用法,也就是定义常量,用const修饰变量时,一定要在初始化的时候进行赋值,否则之后是无法赋值的。 常量指针:
就好比我有一台电脑,装的是xp系统,有一天邻居小姐姐想跟我借电脑用一下,但是她觉得xp系统老掉牙了,想重装为win10系统,这时我就告诉她,不可以,重装只有我可以,这是我的电脑,她虽然不能给我的电脑重装系统,但是它可以选择跟其他人借用有win10系统的电脑。这就是常量指针,对应的还有一种指针常量,往下看。 指针常量:
除了以上两种,还有一种结合了上面两种,叫做指向常量的长指针。
还有就是如果给函数的返回值修饰了const,则接收返回值的变量类型也必须同样被const修饰。 3. 通用字符名长话短说,如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去,类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。。Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。想要深入了解请单击 通用字符名类似于转义字符,使用u和U打头,u然后跟一个八进制,U后面跟的是十六进制,可以这样用:
这样就可以在控制台打印出我们想要字符,比如各种图案。但是前提是要支持通用字符名,如果不支持,就会提示 一般黑框框是显示不了特殊字符的,给大家找到一个中文转unicode的网站:中文字符与Unicode字符相互转换 当使用u6211打印出来的便是我: 4. char的符号问题char的有无符号和int不太一样,它比较独特,char在默认情况下不像int那样,默认既不是unsigned char也不是signed char,是否有符号由C++决定,在我的编译器上可能是有符号类型的,你的终端可能是无符号类型,如果你不确定char,则应该尽可能的显式去声明是nusigned 还是signed,如果你只是存储ASCII字符,则无关char是什么类型,它都可以保存。 5. boolANSI/ISO C++标准添加了一种名叫bool的新类型,它只占一个字节,只保存true和false这个已经宏定义好的字面值,只有假和真两种表现方式,有些人一听到真假就想到01,一想到01就认为该类型的变量只能保存0或1,其实这种理解是不对的,该变量只保存true和false这两个值,并不是保存0和1,除了0被替换为false之外,所有的数字,1,5,8等等都会被替换为true,包括负数,同样反过来,将bool类型的变量赋值给int类型的变量,只会出现0和1这两个值。
6. 运算符的优先级和结合性简单来说先考虑优先级,再考虑结合性。
(编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |