C语言的数据类型

C语言的数据类型

 

一、常量:

程序中不可变化的量

 

1、整型常量:

1)

#define:

宏常量

#define MAX 10

  

1 #include <stdio.h>
2 
3 #define MAX 10
4 
5 int main(){
6         printf("%d\n",10);
7         printf("%d\n",MAX);
8         return 0;
9 }

 

 

2)const

const常量

 1 #include <stdio.h>
 2 
 3 #define MAX 10
 4 
 5 int main(){
 6         printf("%d\n",10);
 7         printf("%d\n",MAX);
 8         const a = 1;
 9         printf("%d\n",a);
10         return 0;
11 }

 

 3)整数常量一共两类:宏常量和const常量

 

2、字符串常量:

1)

#define STRING "hello world\n"

 

 1 #include <stdio.h>
 2 
 3 #define MAX 10
 4 #define STRING "hello wprld\n"
 5 
 6 int main(){
 7         printf("%d\n",10);
 8         printf("%d\n",MAX);
 9         const a = 1;
10         printf("%d\n",a);
11         printf(STRING); 
12         return 0;
13 }
14 ~   

 

 

2)const字符串常量:

 

 

 1 #include <stdio.h>
 2 
 3 #define MAX 10
 4 #define STRING "hello wprld\n"
 5 
 6 int main(){
 7         printf("%d\n",10);
 8         printf("%d\n",MAX);
 9 
10         const a = 1;
11         printf("%d\n",a);
12 
13         printf(STRING);
14 
15         const char *str = "hello";
16 
17         printf(str);
18 
19         return 0;
20 }

 

 

 

 

PS:define 大写,const小写

二、变量:

程序中可变化的量

 

三、二进制数、位、字节、字、进制:

1、位:一个位只能表示0或1,简称bit

2、字节:一个字节为8位,8个二进制,简称BYTE

3、字:一个字为两个字节,简称word。

4、进制:C中

10进制:不加

16进制:0x

8进制:0

 

 1 ubuntu@ubuntu:~/c_demo$ vi 1.c 
 2 ubuntu@ubuntu:~/c_demo$ gcc -o 1 1.c
 3 ubuntu@ubuntu:~/c_demo$ ./1
 4 64
 5 256
 6 ubuntu@ubuntu:~/c_demo$ cat 1.c
 7 #include <stdio.h>
 8 
 9 int main(){
10     printf("%d\n",0100);
11     printf("%d\n",0x100);
12     return 0;
13 }
14 ubuntu@ubuntu:~/c_demo$ 

 

 

 

 

四、原码、反码与补码:

1、原码:

将最高位作为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值。

+7的原码:00000111

-7的原码:10000111

 

2、反码:

一个数如果值为正,那么反码和原码相同。

一个数如果值为负,符号位为1,其他各位与原码相反。

+7的反码:00000111

-7的反码:111111000

 

3、补码:

1)原码和反码都不利于计算机的运算,如原码表示的+7和-7相加,还需要判断符号位。

2)正数的补码:原码、反码、补码都相同

+7的补码:00000111

3)负数的补码:最高位为1,其余各位原码取反,最后对整个数+1。

-7的补码:111111001

 

五、sizeof:

sizeof是C语言关键字,功能是求指定数据类型在内存中的大小,挡位是字节。

一个整数在32位系统下是4个字节。一个整数,最大可以存放2的32的次方-1个字节

 

 1 ubuntu@ubuntu:~/c_demo$ ./1
 2 4
 3 ubuntu@ubuntu:~/c_demo$ cat 1.c 
 4 #include <stdio.h>
 5 
 6 int main(){
 7     printf("%d\n",sizeof(10));
 8     return 0;
 9 }
10 ubuntu@ubuntu:~/c_demo$ 

 

 

 

 

 

六、printf输出

1、输出一个有符号的10进制整数   %d

2、输出一个无符号的10进制整数  %u

3、输出一个十六进制的数 %x

4、输出大写的ige十六进制的数  %X

5、输出八进制的数   %o 

6、输出一个内存地址  %p

7、输出一个字符(不是整数) %c

 

七、short long  unsigned int

1、short是短整数  32位系统中是2字节

2、long 长整数 32位系统中是4字节,windows,linux\unix(8)

3、int 4个字节

4、Long long  64位中8个字节

5、unsigned 关键字是代码无符号数 如 unsigned int  ,无符号数都是正数。

 

八、整数溢出:

计算一个整数的时候,超出整数能够容纳的最大单位后,整数会溢出。溢出的结果是高位舍弃。

 

 1 ubuntu@ubuntu:~/c_demo$ cat 1.c
 2 #include <stdio.h>
 3 
 4 int main(){
 5     unsigned short a = 0xffff;
 6     a = a+1;
 7     printf("%d\n",a);
 8     return 0;
 9 }
10 ubuntu@ubuntu:~/c_demo$ ./1
11 0
12 ubuntu@ubuntu:~/c_demo$ 

 

 

九、大端和小端:

对于intel的x86架构的复杂指令CPU,整数在内存中是倒着存放的,低地址放低位,高地址放高位,小端对齐。

但对于Unix服务器,大端对齐。

 

十、char类型

 

 1 ubuntu@ubuntu:~/c_demo$ ./2
 2 a
 3 1
 4 ubuntu@ubuntu:~/c_demo$ cat 2.c 
 5 #include <stdio.h>
 6 int main(){
 7     char c;
 8     c = 'a';
 9     printf("%c\n",c);
10     printf("%d\n",sizeof(c));
11     return 0;
12 }
13 ubuntu@ubuntu:~/c_demo$ 

 

 

 

 

 

posted @ 2019-01-16 19:14  beiweisanshidu  阅读(415)  评论(0编辑  收藏  举报