你的体重和相同重量的白金(铂金)价格
/*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类型的大小:4char类型的大小:1long类型的大小:4long long类型的大小:8long 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;}
