基础回顾-2 基本类型

C的基本类型分为数值型(整型:short,int,long;实型:float,double,long double)和字符类型char 。

整型

整型分为 短整型short,整型int 和 长整型long。各类型占用字节数跟CPU位数相关

类型 16位CPU 32位 64位
int 2 (btye) 4 4
unsigned int 2 (btye) 4 4
short 2 2 2
unsigned short 2 (btye) 2 2
long 4 4 8
unsigned long 4 4 8

一般现在使用的64位CPU。

unsigned 表示无符号,无符号数都是正值,值范围从 0 开始。
例如:
int 在64位CPU表示值范围为 [-2^31 , 2^31 - 1]
unsigned int 在64位CPU表示值范围为 [0, 2^32 - 1]
表示的数值个数都是 2^32

不同进制的数在C中的表示形式

2进制数以0b或者0B(不区分大小写)开头,如

int a = 0b101;  //换算成十进制为 5
int b = -0b110010;  //换算成十进制为 -50
int c = 0B100001;  //换算成十进制为 33
复制代码

8进制数以0开头,如

int a = 015;  //换算成十进制为 13
int b = -0101;  //换算成十进制为 -65
int c = 0177777;  //换算成十进制为 65535
复制代码

16进制数以0x0X(不区分大小写)开头,如

int a = 0X2A;  //换算成十进制为 42
int b = -0XA0;  //换算成十进制为 -160
int c = 0xffff;  //换算成十进制为 65535
复制代码

在输出时,数值不能以2进制输出,只能以十进制,八进制,十六进制输出。输出符号为

short int long
八进制 %ho %o %lo
十进制 %hd %d %ld
十六进制 %hx 、%hX %x、%X %lx、%lX

实型

实型分为,浮点型float,双精度型double,长双精度long double 。计算机存储小数精度有限,无法存很多很多位的小数

类型 占用字节 有效数字
float 4 (btye) 6-7位
double 8 15-16
long double 16

输出符号为 %f,默认是保留小数点后6位,设置 %.2f 可以保留小数点后两位。

float a = 3.14;
printf("%f -- %.2f\n", c,c);   //打印结果为  3.140000 -- 3.14
复制代码

字符类型

字符类型char,只占用 1 个字节,因为 char 变量在内存中存储的是字符对应的 ASCII 码值,ASCII码值从 0 ~ 127 ,刚好可以用 1 个字节长度的二进制数表示。char 类型变量如果以 %c 输出,会根据 ASCII 码表转换成对应的字符;如果以 %d 输出,那么还是整数。

char a = 'A';
int b = a;
printf("%c -- %d\n", a,b);   //打印结果为  A -- 65
复制代码
  • 长字节的类型向短字节的类型赋值转换时,会发生截断,如 int -> char 时,会把 int 的低位字节保留,超过 char 长度的高位字节丢弃。
  • 反过来则会发生扩展,把不足的字节补全,正数补0,负数补1

运算

不同类型进行运算时,会发生类型转换

  • 短字节向长字节看齐
  • 有符号向无符号看齐
  • 整型向浮点型看齐
  • 单精度向双精度看齐

先转换类型,再进行计算。

自增,自减

i++++ii----i 。 符号在后,则为运算前取值。符号在前,运算后取,即

int i = 0 ;
int j = i++ ;   // i = 1, j = 0
复制代码
int i = 0 ;
int j = ++i ;   // i = 1, j = 1
复制代码
int i = 0 ;
int j = i--;    // i = -1, j = 0
复制代码
int i = 0 ;
int j = --i;    // i = -1, j = -1
复制代码

自增自减只能对变量进行操作,不能对常量操作,比如 ++0 等是错误的

复合运算符

复合运算符是指 *=+=-=等之类的运算符,向右组合。

int i = 0;
i += 2;             // i = i + 2;          
i *= 3;             // i = i * 3;
printf("%d\n",i);    //  6
复制代码

猜你喜欢

转载自blog.csdn.net/weixin_33694172/article/details/91390230
今日推荐