第二章 数据和C

2.1错误和警告

  如果输入这个程序的过程中出现错误(error),比如少了一个分号,编译器会给出语法错误消息。即使输入正确,编译器还可能发出这样的警告(warning):“警告------从double类型转换为float类型时可能丢失数据。”错误消息表明程序中存在错误,不能对其编译。警告则表明尽管代码正确但有可能不是程序员所要的。警告不终止编译。这里的的警告和C语言怎样处理770这样的值有关。

2.2数据:数据类型和关键字

1.位、字节和字

  术语位、字节和字用于描述计算机数据单位或计算机存储单位。这里主要指存储单位。

  最小的存储单位为位(bit)。它可以容纳两个值(0或1)之一。不能在一个位中存储更多的信息,但是计算机中包含数量极多的位。位计算机存储单位的基本单位。

  字节(byte)是常用的计算机存储单位。

2.浮点数

  浮点数与整数的存储方案不一样。浮点数表示法将一个数分为小数部分和指数部分并分别存储。

  整型和浮点型在应用中的区别:

  1.整数没有小数部分;浮点数可以有小数部分

  2.浮点数表示比整数范围大得多的数

  3.对于一些算数运算(例如两个很大的数相减),使用浮点数会损失更多精度

  4.因为在任何区间内(比如1.0和2.0之间)都存在无穷多个实数,所以计算机浮点数不能表示区域内的所有值。浮点数往往只是实际值的近似。

  5.浮点运算通常比整数运算慢。不过,已经开发出来了专门处理浮点运算的微处理器,它可以缩小速度上的差别。

2.3 C和数据类型

1.整型

  ①声明int变量

  int erns;

  以上变量声明创建了变量但没有为其赋值。

  ②初始化变量

  初始化(initialize)变量就是为变量赋一个初始值。声明语句为变量创建、标定存储空间并为其指

  ③int类型常量

  C把不含小数点和指数的数当做整数

  ④八进制和十六进制

  前缀0x或者OX表示使用十六进制,前缀0表示使用八进制

  ⑤显示八进制和十六进制

  如果想显示C语言前缀,可以使用说明符%#o、%#x、%#X分别生成0、0x和0X前缀。

2.其他整数类型

  ①使用多种整数类型的原因

  为什么说long和short类型“可能”占比int类型更多或者更少的存储空间呢?因为C仅保证short类型不会比int类型长,并且long类型不会比int短。这样做是为了适应不同的机器。

  一般情况,long long类型64位,long类型为32位,short类型为16位,int类型为16位或者32位(依机器的自然字节大小而定)。

  ②long常量和long long常量

  八进制和十六进制常量通常被称为int类型。如果值过大,编译器会试用unsigned int,如果不够大,编译器会依次试用long、unsigned long、long long和unsigned long long类型。

  ③打印short、long、long long和unsigned long类型数

  要打印unsigned int数字,可以使用%u符号。打印long数值,可以使用%ld格式说明符。可以对short类型使用h前缀,因此%hd表示以十进制显示short整数,%ho表示以八进制显示short整数。

  不论使用%hd还是%d,short类型变量end的显示结果相同。这是因为在传递函数参数时C自动将short类型的值转换为int类型。这时可能会有两个疑问:为什么要进行这样的转换?h修饰符的用处是什么?第一个问题的答案是:int类型被认为是计算机处理起来最方便有效的整数类型,所以在short类型和int类型长度不同的系统中,使用int类型值进行参数转移的速度更快;第二个问题的答案是:可以使用h修饰符显示一个较长的整数被截为short类型值时的样子。

3.使用字符:char类型

  char类型用于存储字母和标点符号之类的字符。但在技术实现上char却是整数类型,这是因为char类型实际存储的是整数而不是字符。

  ①字符常量及其初始化

  char grade = 'A';

  char broiled;

  broiled = 'T';

  char grade = 65;

  ②非打印字符

  ③打印字符

  printf()说明符决定数据的显示方式不是决定数据的存储方式

4._Bool类型

5.可移植的类型:inttypes.h

  C99提供了一个可选的名字集合,以确切地描述有关信息。例如,int6_t表示一个16位有符号整数类型,uint32_t表示一个32位无符号整数类型。

  要使这些名字对于程序有效,应当在程序中包含inttyoes.h头文件。与int不同,uint32_t不是关键字,所以必须在程序中包含inttypes.h头文件,编译器才能识别它。

  保证所表示的类型至少大于指定长度的最小类型,被称为“最小长度类型”(minimum width type)。例如,int_least8_t是可以容纳至少8位有符号数的那些类型中长度最小的一个的别名。

  当然一些程序员更加关注速度而非空间。C99为他们定义了一组可使计算达到最快的类型集合。这类集合被称为“最快最小长度类型”(fastest minimum width type)。例如,把int_fast8_t定义为系统中对8位有效符号数而言计算机快的整数类型的别名。

  C99不仅提供这些新的、可移植的类型名,还提供了对这些类型数据进行输入输出的方法。

6.参数和易犯的错误

  传递给函数的信息被称为参数。例如,函数调用printf("Hello, pal")包含一个参数“Hello, pal”。与之类似的,函数调用scanf("%d",&weight)包含两个参数:"%d"和&weight。C用都好隔开函数调用中的多个参数。printf()和scanf()函数比较特殊,其参数数目可以不受限制。

posted @   CodeMagicianT  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示