一,数据类型
1,字符型
字节大小 数值范围 打印符号
char: 1 -128--127 %c
[signed] char: 1 -128--127 %c
unsigned char: 1 0--255 %c
2,短整型
字节大小 数值范围 打印符号
short: 1 -32768--32767 %hd
[signed] short: 1 -32768--32767 %hd
unsigned short: 1 0--65535 %hu
八进制打印用 %ho
十进制打印用 %hd
十六进制打印用%hx
3,整型
字节大小 数值范围 打印符号
int: 4 21亿 %d
[signed] int: 4 21亿 %d
unsigned int: 4 42亿 %u
八进制打印用 %o
十进制打印用 %d
十六进制打印用%x
可以使用%5d来进行右对齐,%-5d用来左对齐
printf("%5d",123);
4,长长整型
字节大小 数值大小 打印符号
long long: 8 大 %lld
[signed]long long: 8 大 %lld
unsigned long long: 8 大 %llu
八进制打印用 %llo
十进制打印用 %lld
十六进制打印用%llx
5,浮点型
字节大小 打印符号
float: 4 %f(默认后面六位)
double: 8 %f
long double: 8 %Lf
可以使用%.f来限制小数位数
eg:
printf("%.3f",1.0);
更加详细的数据可以在里limits.h与float.h中查看
二,sizeof使用时的细节
1,在sizeof后的表达式不参与运算
short s=1;
int a=1;
sizeof(s=a+5)
例如在此式中:在sizeof括号中的表达式不运算,sizeof计算的是s的类型大小,也即是short的大小,即为2;s本身的大小也不会改变,仍为1;
三,三目操作符
exp1 ? exp2 : exp3
如果exp1的结果为真,则运行exp2;
如果exp1的结果为假,则运行exp3;
四,break与continue的区别
break直接跳出循环
continue则是跳过当前循环后面的内容,进入下一次循环
五,随机数的获取
rand获取的是伪随机数
要获取随机数,应该在调用rand前调用srand(unsigned int)
为了使srand的参数时刻变化,应该使用time函数作为其参数,而time函数的返回值为time_t
所以在使用time时应该将其返回值强制转换为unsigned int
srand(((unsigned int)time(NULL));
rand函数中最大值为32767
为了获得0~99中的随机数,可以将rand()%100;
rand()%100;
此时取到的值就为0~99;
若要改变范围至1~100,可以在后面加1;
rand()%100+1;