你的体重和相同重量的白金(铂金)价格
/*platinum.c --- 你的体重和相同重量的白金(铂金)价格*/
#include "stdio.h"
int main(void){
float weight; /*你的体重*/
float value; /*相同重量的白金价值*/
printf("输入你的体重:");
/*获取用户输入*/
scanf("%f",&weight);
/*假设白金价格每Pt $1720*/
value = 1700 * weight;
printf("相同重量的白金价值:%f",value);
return 0;
}
数据: 数据类型和关键字
最初K&R给出的关键字 | C90标准添加的关键字 | C99标准添加的关键字 |
---|---|---|
int | signed | _Bool |
long | void | _Complex |
short | _Imaginary | |
unsigned | ||
char | ||
float | ||
double |
在C语言中,用int
关键字来表示基本数据类型,后3个关键字(long
,short
,unsigned
)和C90
新增的signed
用于提供基本整数类型的变式,例如unsigned short int
和 long long int
。char
关键字用于指定字母和其他字符(#
,$
,%
和*
)。另外,char
类型可以表示较小的整数。float
,double
和long double
表示带小数点的数。_Bool
类型表示布尔值(true
和false
),_Complex
和_Imaginary
分别表示复数和虚数。
通过这些关键字创建的类型,按计算机的存储方式分为俩大基本数据类型:
整数类型
和浮点数类型
。
转义字符
转义序列 | 含义 |
---|---|
\a | 报警(ANSI C) |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\\ | 反斜杠(\) |
\‘ | 单引号 |
\“ | 双引号 |
\? | 问号 |
\0oo | 八进制值(oo必须是有效的八进制数,即每个o可以表示0~7中的一个数) |
\xhh | 十六进制值(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数) |
可移植类型stdint.h
和inttypes.h
/*altnames.c -- 可移植整数类型名*/
#include "stdio.h"
#include "stdint.h" //支持可移植性
int main(void){
int32_t me32;
me32 = 45933945;
printf("m32=%d",me32);
}
复数和虚数类型
许多科学和工程都要用到复数和虚数。C99标准支持复数和虚数类型,但是有所保留。
C语言有3种复数类型: float_Complex
、double_Complex
和long double_Complex
。还有3种虚数类型是float_Imaginary
、double_Imaginary
和long double_Imafinary
如果包含complex.h
头文件,便可用complex
替代_Complex
;用imaginary
可以替代_Imaginary
。
注意: C语言是没有字符串类型但是也可能很好的处理字符串类型。
总结:基本数据类型
关键字:
- 基本数据类型由11个关键字组成:
int
,long
,short
,unsigned
,char
,float
,double
,signed
,_Bool
,_Complex
和_Imaginary
- 有符号的整形
int
—系统给定的基本数据类型。C语言规定int类型不小于16位。short
或short int
—最大的short类型整数小于或等于最大的int类型整数。C语言规定short类型至少占16位。long
或long int
— 该类型可表示的整数大于或等于最大的int类型整数。C语言规定long类型至少占32位。long long
或long long int
—该类型可表示的最大或等于最大的long类型整数。long long类型至少占64位。
一般而言long
类型占用的内存比short类型大,int类型的宽度要么和long类型相同,要么和short类型相同。
无符号整型
无符号整型只能用于表示0和正整数,因此无符号整型可表示的正整数比有符号的正整型的大,在整型类型前加上关键字
unsigned
表明该类型是无符号整型:unsigned int
,unsigned short
,unsigned long
。单独的unsigned
相当于unsigned int
。
字符类型
可打印出来的符号(如A,&和+)都是字符。根据定义,char类型表示一个字符要占据一个字节内存。出于历史原因1字节等于8位,但是表示基本字符集,也可以是16位或者更大。
- char —字符类型关键字。有些编译器使用有符号的char,而有些使用无符号的char。在有需要时,可以在char前面加上关键字
unsigned
和signed
来指明使用哪一种类型
布尔类型
布尔值表示true和false, c语言用1表示true;用0表示false
- _Bool — 布尔类型的关键字。布尔类型是无符号int类型,所占用的空间只要能存储0或1即可
实浮点类型
- float — 系统的基本浮点类型,可精确表示至少6位有效数字。
- double — 存储浮点数的范围(可能)更大,能表示比float类型更多的有效数字(至少10位,通常会更多)和更大的指数
- long double — 存储浮点类数的范围(可能)比double更大,能表示比double更多的有效数字和更大的指数
复数和虚数浮点数
虚数类型是可选的类型,复数的实部和虚数类型都基于实浮点类型来构成
- float_Complex
- double_Complex
- long double_Complex
- float_Imaginary
- double_Imaginary
- long double_Imaginary
类型的大小
/*typesize.c -- 打印类型大小*/
#include "stdio.h"
int main(void){
/*C99为类型大小提供%zd转换说明*/
printf("int类型的大小:%zd\r\n",sizeof(int));
printf("char类型的大小:%zd\r\n",sizeof(char));
printf("long类型的大小:%zd\r\n",sizeof(long));
printf("long long类型的大小:%zd\r\n",sizeof(long long));
printf("long double类型的大小:%zd\r\n",sizeof(long double));
}
结果为
int类型的大小:4
char类型的大小:1
long类型的大小:4
long long类型的大小:8
long double类型的大小:16
使用数据类型
int apples = 3; /*正确*/
int oranges = 3.0; /*不好的形式*/
参数和陷阱
/*badcount.c -- 参数错误的情况*/
#include "stdio.h"
int mian(void){
int n = 4;
int m = 5;
float f = 7.0f;
float g = 8.0f;
printf("%d\n",n,m); /*参数太多*/
printf("%d,%d,%d\n",m,n); /*参数太少*/
printf("%d,%d\n",f,g);/*参数类型不匹配*/
return 0;
}
转义序列示例
/*escape.c -- 使用转义序列*/
#include "stdio.h"
int main(void){
float salary;
printf("\a 'a'的转义字符");
printf("b的转义字符\b\b\b\b\b\b");
scanf("%f",&salary);
printf("\n\t第一个f:%.2f;第二个+12的f:%.2f",salary,salary+12);
return 0;
}