C强大而灵活的数据
2015-09-10 12:46
411 查看
强大而灵活的数据
变量:数据在程序运行过程中可能变化或被赋值;常量:数据可以在程序使用之前预先设定并在整个运行过程中没有变化。
定义变量的常用格式:数据类型 变量名;
定义多个类型相同的变量格式:数据类型 变量名, 变量名, 变量名…;
C数据透视图
printf() 的属性,格式说明符的数目和要显示的值的数目一定要相同;每个要显示的值都必须对应自己的格式说明符,并且显示值的类型要同说明符相匹配。printf() 说明符决定数据的显示方式而不决定数据的存储方式。
char 类型声明与其它类型变量的声明方式相同,此类型用于存储字母和标点符号之类的字符,实际上 char 是整数类型。
何为可移植类型?
通过对已有类型进行一些别名的扩展,以达到确切的描述相关信息。在使用这些可移植类型(它们不是关键字& int 不一样的哦)时,需要引用头文件 inttypes.h ,inttypes.h 头文件定义了一些可用在 scanf() 和 printf() 中读写这些类型整数的宏。
此类型使用 typedef 进行定义:
typedef int int32_t;
使用 #define 指令定义格式说明符:
#define PRId32 “d” //输出说明符。
#define SCNd32 “d” //输入说明符。
1.确切长度类型,有符号类型使用 intN_t 格式、无符号类型使用 uintN_t 格式;格式宏使用 【d】 或 【i】 表示有符号类型,无符号类型使用 【o、x、X】说明符代替“%u”。
2.最小长度类型,可以保证一种类型的大小至少为某个确定的位。
3.最快最小长度类型,对于特定系统,有些整数表示可能比其它表示更快,inttypes.h定义了表示至少某个位数的最快类型。
4.最大长度类型,有时需要使用可用的最大整数类型,系统也可能提供比 longlong 或 unsigned longlong 更长的整数类型。
5.可以保存指针值的整数,inttypes.h 头文件通过包含 stdint.h 头文件定义了以下两种整数类型,可以精确地保存指针值。
浮点型
C语言中包括浮点数:float 、 double 、long double。
浮点型变量的声明及初始方法同整型变量相同,在C中浮点型默认为double,可以通过【f && F】后缀把浮点常量当作 float 类型,也可以通过【l && L】后缀把浮点常量当中 long double 类型。使用 printf() 打印输出时可用说明符【%f 、%e、%a】。
sizeof 是求指定数据类型在内存中的大小,单位 “Byte”。
上图的编译结果第5行“type _Complex has a size of zd bytes.”,说明本机是不支持c99标准的,至于复数(_Complex)在相应环境中占多少自然字,你可以自己去测试哦!
printf() 刷新输出的可能性:
1.缓冲区满的时候
2.遇到换行符的时候
3.需要输入的时候
变量:数据在程序运行过程中可能变化或被赋值;常量:数据可以在程序使用之前预先设定并在整个运行过程中没有变化。
定义变量的常用格式:数据类型 变量名;
定义多个类型相同的变量格式:数据类型 变量名, 变量名, 变量名…;
C数据透视图
printf() 的属性,格式说明符的数目和要显示的值的数目一定要相同;每个要显示的值都必须对应自己的格式说明符,并且显示值的类型要同说明符相匹配。printf() 说明符决定数据的显示方式而不决定数据的存储方式。
/*print1.c 说明 print() 的一些属性*/ #include <stdio.h> int main(void) { int ten = 10; int two = 2; printf("Doing it right: "); printf("%d minus %d is %d\n", ten, 2, ten-two ); printf("Doing it wrong: "); //忘掉了两个参数 printf("%d minus %d is %d\n", ten ); return 0; }
char 类型声明与其它类型变量的声明方式相同,此类型用于存储字母和标点符号之类的字符,实际上 char 是整数类型。
/*charcode.c 显示一个字符的编码值*/ #include <stdio.h> int main(void) { char ch, beep; beep = '\a'; /* 如果编译器不识别警报字符(\a),则可以使用ASCII码替代 beep = '\007'; */ printf("Please enter a character.\n"); scanf("%c", &ch); /*获取用户输入*/ printf("The code for %c is %d.\n", ch, ch ); printf("%c", beep); return 0; }
何为可移植类型?
通过对已有类型进行一些别名的扩展,以达到确切的描述相关信息。在使用这些可移植类型(它们不是关键字& int 不一样的哦)时,需要引用头文件 inttypes.h ,inttypes.h 头文件定义了一些可用在 scanf() 和 printf() 中读写这些类型整数的宏。
此类型使用 typedef 进行定义:
typedef int int32_t;
使用 #define 指令定义格式说明符:
#define PRId32 “d” //输出说明符。
#define SCNd32 “d” //输入说明符。
1.确切长度类型,有符号类型使用 intN_t 格式、无符号类型使用 uintN_t 格式;格式宏使用 【d】 或 【i】 表示有符号类型,无符号类型使用 【o、x、X】说明符代替“%u”。
2.最小长度类型,可以保证一种类型的大小至少为某个确定的位。
3.最快最小长度类型,对于特定系统,有些整数表示可能比其它表示更快,inttypes.h定义了表示至少某个位数的最快类型。
4.最大长度类型,有时需要使用可用的最大整数类型,系统也可能提供比 longlong 或 unsigned longlong 更长的整数类型。
5.可以保存指针值的整数,inttypes.h 头文件通过包含 stdint.h 头文件定义了以下两种整数类型,可以精确地保存指针值。
/*altnames.c 可移植的整数类型名*/ #include <stdio.h> #include <inttypes.h> //支持可移植类型 int main(void) { int16_t me16; //me16是一个16位有符号变量 me16 = 4593; printf("First, assume int16_t is short:\n"); printf("me16 = %hd\n", me16); printf("Next, let's not make any assumptions.\n"); printf("Instead, use a \"macro\" from inttypes.h:"); printf("me16 = %" PRId16 , me16); /*参数 PRId16被它在 inttypes.h 中的定义“hd” 所替代*/ return 0; }
浮点型
C语言中包括浮点数:float 、 double 、long double。
浮点型变量的声明及初始方法同整型变量相同,在C中浮点型默认为double,可以通过【f && F】后缀把浮点常量当作 float 类型,也可以通过【l && L】后缀把浮点常量当中 long double 类型。使用 printf() 打印输出时可用说明符【%f 、%e、%a】。
/*showf_pt.c 以三种方式显示浮点值*/ #include <stdio.h> int main(void) { float aboat = 32000.0; double abet = 2.14e9; long double dip = 5.32e-5; printf("%f can be written %e\n", aboat, aboat ); /*使用%e打印指数记数法的数字*/ printf("%f can be written %e\n", abet, abet ); printf("%f can be written %e\n", dip, dip ); printf("%a %a %a\n", aboat, abet, dip ); /*使用%a打印十六进制格式浮点数*/ return 0; }
sizeof 是求指定数据类型在内存中的大小,单位 “Byte”。
/*typesize.c 输出类型的大小*/ #include <stdio.h> int main(void) { /*c99 为类型提供一个 %zd 说明符*/ printf("type int has a size of %u bytes.\n", sizeof(int) ); printf("type char has a size of %u bytes.\n", sizeof(char) ); printf("type long has a size of %u bytes.\n", sizeof(long) ); printf("type double has a size of %u bytes.\n", sizeof(double) ); printf("type _Complex has a size of %zd bytes.\n", sizeof(_Complex) ); /*使用 c99 提供的 %zd 说明符*/ printf("type unsigned int has a size of %lu bytes.\n", sizeof(unsigned int) ); /* /sublime_text 编译器允许使用 %lu 代替 %u,因为C允许 由具体的实现来选择 sizeof 返回的结果值实际使用哪种 无符号整数类型。 */ return 0; }
上图的编译结果第5行“type _Complex has a size of zd bytes.”,说明本机是不支持c99标准的,至于复数(_Complex)在相应环境中占多少自然字,你可以自己去测试哦!
printf() 刷新输出的可能性:
1.缓冲区满的时候
2.遇到换行符的时候
3.需要输入的时候
相关文章推荐
- 算法复习之分治算法_01
- 求N个整数的平均值(注意N可能很大,N个数直接相加会造成整数溢出)
- C C++的整数溢出陷阱
- 4.漏洞验证系列--MS15-034 HTTP协议栈整数溢出
- leetcode试水
- 震惊,超出数据范围有这么多种方法,活久见!
- LA 3882 And Then There Was One 递推
- PowerDesigner修改设计图中文字的字体大小等样式
- ssm中关于basedao和baseMapper的区别
- Golang资源
- UI一揽子计划 1 (UIView UILabel)
- 什么导致了Context泄露:Handler&内部类
- I2C 不良
- Java HTTPS客户端如何处理证书
- 同余定理 专题
- malloc_stats---检查内存泄露的神器
- malloc_stats---检查内存泄露的神器
- malloc_stats---检查内存泄露的神器
- 如何区分cassandra里primary key,partition key,cluster key,clustering key
- iOS 如何在ARC下 使用MRC的类库