一、正数在计算机中表示为原码,最高位为符号位,符号为0.
正数的原码、补码、反码相同
1的原码为:0000 0000 0000 0000 0000 0000 0000 0001
2147483647的原码:0111 1111 1111 1111 1111 1111 1111 1111
注意:2的32次方的值为2147483648
负数在计算机中表示的为补码,最高位符号位为1。
-1的原码为1000 0000 0000 0000 0000 0000 0000 0001;
反码为1111 1111 1111 1111 1111 1111 1111 1110;
补码为1111 1111 1111 1111 1111 1111 1111 1111;(即是2的31次方)
关于“为什么负数的整形数据的取值范围是-2的31次方”,可以看一下这篇文章:https://blog.youkuaiyun.com/HPU_LY/article/details/83995407
二、double与float保留多少位数字输出
double a = 3.1323424;
printf("%.2lf",a); //printf("%.*lf",a);
三、类型转换
1、自动类型转换
小范围自动转换为大范围
int a = 3;
double b = a;
printf("%lf",b);
2、强制类型转换
大范围强制转换为小范围
double a = 3.114;
printf("%d",(int)a); 、//注意强制类型写在(int)
四、单位
1B=8bit //B代表着字节("Byte"),bit是电脑中的最小单位
1kB=1024B //1bit是代表2种电平0或1,一个英文字母要8个BIT才能表示,一个汉字要16个BIT来表示.8个BIT才是一个字节.
1mB=1024kB
1GB=1024MB
1TB=1024GB
类型 存储大小 值范围
char 1 字节 -128 到 127 或 0 到 255
int 2 或 4 字节
long 4 字节
float 4 字节
double 8 字节
五、关于字符与ASCII
'A' -- 65
'a' -- 97
char q='a'
char x='x';
printf("%d,%c",x,x);
六、数组
int a[10] = {0}; //表示对10个数组初始化为0
一维字符数组:char s[6]={'H','a','p','p','y','\0'};
等同于:
char s[6]="Happy"; //"Happy"的有效长度是5,但存储它的数组的长度至少为6.因为在C语言中,字符串由有效字符和字符串结束符'\0'组成
七、常用的字符串处理函数
1、printf与puts的区别
在于Put输出字符串后会自动换行
C语言基础知识整理合集
scanf("%s",str);
printf("%s",str); 换成puts(str);
printf("%s","Hello");
运行结果:pp pp
ppHello; pp
Hello
2、scanf与gets的区别
前者遇到空格或者换行便不再读取,后者遇到换行不在读取
3、strcpy(s1,s2); //将s2的值赋值给s1
strcat(s1,s2); //字符串连接
strcmp(s1,s2); //字符串比较,相等则为0,s1>s2,大于0,比较的不是长度,而是从首地址开始比较Ascii的值
strlen(s1) //字符串的长度
八、指针与数组
指针数组:C语言中的数组可以是任意类型,如果数组的各个元素是指针类型,则这个数组是指针数组
例如:int *p[10];
指针数组与二维数组的区别(可以看下C语言那本书的P254页)
char color[][7] = {"red","blue","yellow"};
char *pcolor[] = {"red","blue","yellow"};
其它细节可以看一下书哈