第3章数据和C

本章介绍以下内容

  • 关键字:int、short、long、unsigned、char、float、double、_Bool、_Complex、_Imaginary
  • 运算符: sizeof()
  • 函数:scanf(()
  • 整数类型和浮点数类型的区别
  • 如何书写整型和浮点型常数,如何声明它些类型的变量
  • 如何使用printf()和scanf()函数读写不同类型的值

       程序离不开数据。把数字、字母和文字输入计算机,就是希望它利用这些数据完成某些任务,例如,需要计算一份利息或显示一份葡萄洒商的排序列表。本章除了介绍如何读取数据外,还将教会读者如何操控数据。

C语言提供两大系列的多种数据类型。本章详细介绍两大数据类型:整数类型和浮点数类型,讲解这些数据类型是什么、如何声明它们、如何以及何时使用它们。除此之外,琮将介绍常量和变量的区别。读者很快就能看到第1个交互式程序。

3.1 示例程序

本章仍从一个简单的程序开始。如果发现有不熟悉的内容,别担心,我们稍后会详细解释。该程序的意图比较明了,请试着编译并运行程序清单3.1中的源代码。为了节省时间,在输入源代码时可省略注释。

3.1示例程序

#include <stdio.h>
int main (void)
{
        float weight;  /*你的体重*/
        float value; /*相等重量的白金价值*/

        printf("你的体重值多少黄金?\n");
        printf("计算一下\n");
        printf("输入你的体重(kg):");

        /*获取用户的输入*/
        scanf("%f",&weight);
        /*假设黄金的价格是162.99/g*/
        value = 162.99 * weight * 1000 ;
        printf("你的体重值:¥%.2f。\n",value);
        printf("如果黄金下跌的话,你将会不值钱了。\n");
        printf("多吃点。\n");
        return 0;
}

  运行结果:

你的体重值多少黄金?
计算一下
输入你的体重(kg):52
你的体重值:¥8475480.00。
如果黄金下跌的话,你将会不值钱了。
多吃点。

3.2变量与常量数据

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

int

long

short

unsigned

char

float

double

________________

signed

void

________________

_Bool

_Complex

_Imaginary

________________

3.3.1整数类型和浮点数类型

3.3.2整数

3.3.3浮点数

整数与浮点数区别

  • 整数没有小数部分:浮点数可以有小数部分
  • 浮点数可以表示比整数范围磊得多的数
  • 对于一些算术运算(例如两个很大数相减),使用浮点数米娜桑损失更多的精度。
  • 因为在任何区间内(比如1.0和2.0之间)都存在无穷多个实数,所以计算机浮点数不能表示区域内所有的值。浮点数往往只是实际值的近似。例如,7.0台能以浮点值6.999999存储。
  • 浮点运行通常比整数运算慢。不过,已以开发出了专门处理浮点运算的微处理器,它可以缩小速度上的差别。

3.4数据类型

3.4.1 int类型

IBM PC兼容机有16位的字,因而采用16位来存储一个int值,取值范围为-32768到32767

一、声明int变量

两种声明方法

int enrs;

int hogs,cows,goats;

两种赋值方法

cows = 112;

scanf();

二、初始化变量

int hogs = 21;

int cows = 32,goats = 14;

int dogs,cats = 94;

三、int类型常量

21、32、14、94都是整数常量

四 、打印int值
使用printf()函数时,格式说明符的数目和要显示的值的数目一定要相同。

五、八进制和十六进制

六、显示八进数和十六进制数

3.4.2其它整数类型

一、声明其它整数类型

 

二、使用多种整数类型的原因

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

signed

16位 short和int  -32767~32767

32位 long 和int -2147483647~2147483647

unsigned

16位0~65535

32位0~4294967296

signed

64位long long -9223372036854775807~9223372036854775807

unsigned

64位 long long   0~18446744073709551615

 

整数溢出事例

三、long常量和long long常量

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

 

运行结果

 

无符号数3000000000和有符号数-1294967296在内存的表示方法是一样的。

3000000000
10110010110100000101111000000000

-1294967296
10110010110100000101111000000000

在传递函数参数时C自动将short类型的值转换为int类型。两个疑问

1、int类型被认为是计算机处理起来最方便有效的整数类型,所以在short类型不int类型长度不同的系统中,使用int类型值进行参数传递的速度更快。

2、可以使用h修饰符显示一个较长期的整数被截为short类型值的样子。输出的第三行就演示了这一点。把65537按照二进制格式写为一个32位的数字时,它应该是10000000000000001,在printf()中使用%hd说明符将将使它只显示后16位,即显示值1.

最后一行输出完显示了verybig变量的完整值,然后通过使用%ld说明符显示了存储在它的后32位中的值。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值