数据类型及其运算(一)
整型
类型 | 名称 | 存储大小 |
---|---|---|
char | 字符数据类型 | 1 |
short | 短整型 | 2 |
int | 整型 | 4 |
long | 长整型 | 4 |
long long | 更长整型 | 8 |
类型的存储大小与系统的位数有关,可以在平台使用 sizeof 运算符得到类型的存储字节大小
(以下数据为VS2013)
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
return 0;
}
类型的使用:
char ch = ‘w’;
int weight = 120;
浮点型
类型 | 名称 | 存储大小 | 有效位 |
---|---|---|---|
float | 单精度浮点数 | 4 | 6 |
double | 双精度浮点数 | 8 | 15 |
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
为了提高运算精度,在C语言中进行浮点数的算术运算时,都将float型数据转换为double型
空类型
void类型特点:
- 函数不返回值 例:void p1(int a, int b)
- 函数参数为空 例:int main(void)
- 类型为void*的指针表示为对象的地址,不是类型
强制类型转换
将一个表达式转换成所需类型
一般形式为:(类型名)(表达式)
注意:表达式应括起来
(int) (x+y)与(int) x+y不一样
(int) (x+y)——x+y的值进行强制类型转换为int类型
(int) x+y——先将x强制类型转换为int类型后,再与y相加
在强制类型转换时,得到一个所需类型的中间数据,而原来的变量类型未发生变化
不同类型数据的混合运算
若运算符两侧的数据类型不同,则先进行类型转换,在进行运算
- +、-、*、/运算的两个数中有一个float型或double型,结果为double型
- int型与float型或double型进行运算,结果为double型
- 字符char型与整型进行运算,把字符的ASCII码与整型数据进行运算,结果为整型
- 字符char型与浮点型进行运算,把字符的ASCII码转换为double型,在进行运算,结果为double型
#include<stdio.h>
int main()
{
int a = 10;
char b = 'a';
int c = 3;
float d = 2.5;
double e = 7.5;
printf("%f\n", a + b + c*d - e / 3);
return 0;
}
结果为:
112.000000
分析:
编译时从左向右进行
- a+b = 10+‘a’,‘a’的ASCII码为97,结果为107
- “ * ”优先级比“ + ”高,故进行乘法运算,先将c和d都转换为double型,再运算c*d的结果为7.5
- 107+7.5,先将107转换成double型107.0,再相加,结果为114.5
- “ / ”优先级比“ - ”高,进行除法运算,先将3转换成double型,再运算e/3的结果为2.5
- 114.5-2.5=112.0(此时运算符两侧的数都为double型,可直接运算)