赞
踩
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、条件运算符
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。