本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1、数据类型、常量、变量及运算符
1.1 数据类型
1.1.1基本数据类型
逻辑类型。只有两个量true和false,表示逻辑真值和逻辑假值。
整数类型。包括char, short, int和long。
浮点类型。包括float和double。
void类型。主要用于说明不返回值的函数或指向任一类型的指针等。
bool类型 <stdbool.h> _Bool基本类型 //注意C语言里面没有bool类型
例如,
if (-1)
x=12 ;
else
x=18 ;
上面-1是非零数值,逻辑值为真,所以x赋给的是12,而不是18。
char类型
char:1个字节 (-128~127)(0-255) 使用char数据类型的变量需要特别注意,防止数据超出值域,思考下列几个语句:
char c1= 128; //出错,数据越界(-128)
char c1= 129; //出错,数据越界(-127)
unsigned char c2= -1; //出错,数据越界(255)
C语言中规定char类型占一个字节,short类型小于等于int,long类型大于等于int
在linux里面看每个数据类型结构的范围:vi /usr/include/limits.h
sizeof():运算符,计算()中的类型所占字节大小
short:2个字节 (-32768-32767) (0-65535)
int: 4个字节 (-2147483648-2147483647) (0~4294967295)
long: 32位机占4个字节 (-2147483648-2147483647) (0~4294967295)
64位占8个字节
long long:8个字节
float:单精度浮点型 4字节
double:双精度浮点型 8字节
构造数据类型:数组、枚举、联合体、结构体
1.1.2 强制数据类型的转换
强制数据类型的转换是指采用某种方式将某种数据类型强制转换成指定的数据类型。包括显式的数据类型转换,和隐式的数据类型转换。
例如,
int a=22, b=0 ;
float c = 24.87, d= 3.3;
b = (int) (a + c +d) ; // b为50
`强制类型转换符后面的表达式如存在复杂运算,就一定要用小括号括起来
强制类型转换符是一种不安全的转换,一般都是将高级类型转换成低级类型,要丢失数据的精度;
强制类型转换并不改变表达式中变量的数据类型和其值。`