1、sizeof
是一个运算符,给出某个类型或变量在内存中所占据的字节数
例:sizeof(int)
sizeof(i)
#include <stdio.h>
int main(){
int a;
a = 6;
printf("sizeof(int) = %ld\n",sizeof(int)); //4个字节,32bit
printf("sizeof(a) = %ld\n",sizeof(a)); //4个字节,32bit
printf("sizeof(a) = %ld\n",sizeof(a++)); //sizeof是4
printf("a = %d\n",a); //a还是6,因为sizeof是静态的
printf("sizeof(a) = %ld\n",sizeof(a+1.0)); //sizeof是8,因为1.0是double型
printf("a = %d\n",a); //a是6
return 0;
}
sizeof(int) = 4; sizeof(double) = 8; sizeof(long double) = 16;
sizeof是静态的
printf("sizeof(char) = %ld\n",sizeof(char)); //1字节
printf("sizeof(short) = %ld\n",sizeof(short)); //2
printf("sizeof(int) = %ld\n",sizeof(int)); //4
printf("sizeof(long) = %ld\n",sizeof(long)); //8
printf("sizeof(long long) = %ld\n",sizeof(long long)); //8
2、补码
正数的补码是其本身,负数的补码是在原码的基础上各位取反,再+1
char c = 255;
int i = 255;
printf("c = %d,i = %d\n",c,i);
c的值为-1,i的值为255
因为char只有8bit,11111111是-1
int有32个bit,00000000 00000000 00000000 11111111结果是255
3、unsigned
在类型前面加unsigned可以把该类型当作纯二进制看待,不以补码的形式表示
char c = 255 的结果是-1
unsigned char c = 255 的结果是255
char c = 127;
c = c + 1;
printf("c = %d\n",c);
结果是-128,因为01111111 + 00000001 = 10000000
加了unsigned之后
unsigned char c = 127;
c = c + 1;
printf("c = %d\n",c);
结果是128,因为是纯二进制运算
unsigned(-1)表示全1,因为-1是一个字节(8bit)中最大数11111111的补码
unsigned和int的区别只是在输出的不同,内部计算是一样的
4、float字长32bit
double字长64bit
第一行结果是-0.005
第二行结果是-0.0048999999......三十位
第三行结果是-0.000
5、
char c;
char d;
c = 1;
d = '1';
printf("c = %d\n",c);
printf("d = %d\n",d);
结果是c = 1
d = 49 //因为d是字符1,在ASCII码中字符1对应49
char c;
scanf("%c",&c);
printf("c = %d\n",c);
printf("c = '%c'\n",c);
第一个printf结果是49,第二个结果是字符'1'
scanf只能处理int不能处理char,可以scanf(“%c”,&c),但不能char c;scanf(“%d”,&c);
6、逃逸字符
在printf(" ");的双引号中想要输出的字符串中也包含双引号,需要用 \ 反斜杠 开头,跟上双引号组成一个字符
printf("123\t456\n");
printf("12\t456\n");
输出结果为:
123 456
12 456
7、自动类型转换
8、强制类型转换
printf("%d",(int)10.2);
结果为10
int a = 5;
int b = 6;
double d = (double)(a/b);
9、#include <stdbool.h>
之后就可以使用bool和true、false
bool b = 6 > 5;
printf("%d\n",b);
结果是1
10、逻辑运算
x > 4 && x < 6
如何判断一个字符c是否是大写字母
c>='A'&&c<='Z'
!age<20 先计算!age,答案不是1就是0,永远<20成立
10、条件运算符