小笔记

0
7

关于几个类型的范围

int -2147483647-2147483648 -2^31~2^31-1

long -2147483647~2147483648 -2^31~2^31-1 (和int相等)

unsigned long long 0~18446744073709551615 0~2^64-1

unsigned int 0~4294967295 0~2^32-1

unsigned long 0~4294967295 0~2^32-1

long long的最大值:-9223372036854775808 ~ 9223372036854775807 -2^63,2^63-1


0x3f3f3f3f与0x7fffffff的意义

当使用min等函数的时候,会需要定义无穷大。一般会有两个选择:0x7fffffff和0x3f3f3f3f

(1) 0x7fffffff

首先了解数字的含义,”0x”是一个前缀,表示十六进制。

而”7″在二进制中是7的二进制码为 0111,f是指1111。

这样, 0x7FFFFFFF 的二进制表示就是除了符号位是 0表示正数,其余都是1。

对于int而言,0x7fffffff是最大的数值。

所以可以把需要比较的无穷大设为0x7fffffff再进行比较。

但是对于写代码还有一个更合适的数值,就是

(2) 0x3f3f3f3f

在实际写代码的时候,有的时候并不会出现接近于2^31这样的数值,因此可以把无穷大设得小一点,一般设为0x3f3f3f3f。

0x3f3f3f3f的数值为1061109567,它的两倍也只有2122219134,不会溢出。

这样就有一个好处,当两个无穷大相加的时候可以使int型整数不溢出。

而使用0x3f3f3f3f在对于数组定义的时候也比较方便,一般数组批量赋值时会使用memset函数,如果想将一个数组全部定义为”无穷大”的0x3f3f3f3f,因为memset函数是对字节进行操作,而0x3f3f3f3f的每个字节都是0x3f,所以可以直接定义为

memset(数组名,0x3f,sizeof(数组名));

占位符类型

  %c ASCII 字符

  %f 浮点数

  %p 指针

  %u 无符号十进制整数(unsigned int)

  %s 字符串

  %d 整数转成十进位

  %o 整数转成八进位

  %x 整数转成小写十六进位

  %X 整数转成大写十六进位

  %e 浮点数、e-记数法

  %g 自动舍去小数点后多余0

  %G 根据数值不同自动选择%f或%e

  %i 有符号十进制数(与%d相同)

<

发布回复

请输入评论!
请输入你的名字