数据和C学习

el/2024/5/23 1:12:53

第三章 数据和C

3.1 示例程序

#include<stdio.h>
int main(void)
{float weight;//体重float value;//白金价值printf("Are yuu worth your weight in platinum?\n");printf("Let`s check it out.\n");printf("please enter your weight in pounds:");scanf("%f", &weight);//用户输入体重value = 1700*weight*14.5833;printf("You weight in platinum is worth &%.2f.\n",value);return 0;
}
3.1.1 注意

​ %.2f中的 . 2 用于控制输出精度,指定输出的浮点数只显示小数点后两位。

3.2 变量与常量数据

1、在整个程序运行中没有变化,称为常量

2、在程序运行中可能会改变或被赋值,称为变量

3.3 数据:数据类型关键字

  1. 对变量而言,要在声明时指定变量的类型。

  2. 按计算机储存方式可分为两种基本类型:整数类型和浮点数类型。

  3. 位、字节和字是描述计算机数据单元或存储单元的术语。

  4. 位(bit)是最小的存储单元。

  5. 字节(byte)是常用的计算机存储单元。1字节为8位。

  6. 字(word)是设计计算机时给定的自然存储单位。

3.3.1 整数和浮点数

整数和浮点数在计算机中的存储方式不同。

3.3.2 整数
  1. 整数就是没有小数部分的数(没有小数点)
  2. 计算机以二进制数字存储整数
3.3.3 浮点数
  1. 计算机把浮点数分为 小数部分 和 指数部分 来表示,且将这两部分分开储存。
  2. 浮点数可以表示的范围比整数大。
  3. 对于一些算数运算,浮点数损失的精度更多(如:两个很大的数想减)。
  4. 浮点数通常是实际值的近似值。如:7.0 被存储为浮点数 6.9999999999
  5. CPU由专用的浮点处理器,用来加快浮点数的运算。

3.4 C语言的基本数据类型

3.4.1 Int 类型

Int类型是有符号整型,即int类型的值必须是整数,正整数,负整数,零。

1、声明int变量
int erns;
int hogs,cows,goats;

先写int ,然后写变量名,最后加分号。

声明多个变量时,可在变量名之间加逗号隔开。

所有的标点符号必须是英文符号

2、初始化变量
int hogs = 21;
int cows = 32 , gots = 14;
int dogs,cats = 94; //有效,但是不建议用这种形式。
  1. 初始化变量就是为变量赋一个初始值。
  2. 声明,为变量创建和标记存储空间;并为其指定初始值。
3、int 类型常量

C语言把不含小数点和指数的数作为整数。

直接出现的整数都是整型常量,或整型字面量。

4、打印int值
  1. %d 称为转换说明,指定了printf();应使用什么格式来显示一个值。
5、八进制和十六进制
  1. C语言都假定整数型常量是十进制。
  2. 0x 或 0X 前缀表示十六进制值,如:16 —》0x10或0X10
  3. 0 前缀表示八进制,如:16 -----》020
6、显示八进制和十六进制
#include<stdio.h>
int main(void)
{int x = 100;printf("dec = %d; octal = %o; hex = %x\n",x,x,x);printf("dec = %d; octal = %#o; hex = %#x\n",x,x,x);return 0;
}

十进制显示数字 :使用%d

八进制显示数字:使用%o

十六进制显示数字:使用%x

显示各进制的前缀:使用%#o、%#x、%#X

3.4.2其他整数类型
  1. short int 类型(short):有符号型,用于较小数值的场合,节省空间;占得存储空间可能比int少。
  2. long int 类型(long):有符号型,适用于较大数值的场合。
  3. long long int类型(long long):有符号型,该类型至少占64位。
  4. unsigned int类型(unsigned):无符号型,只用于非负值的场合。
  5. unsigned long int 、unsigned int 、unsigned long long 类型都是无符号型。
  6. int类型被认为是计算机处理整数类型是最高效的类型。
3.4.3 使用字符:char类型
  1. char 类型用于储存字符(字母或标点符号);char类型从技术层面上看是整数类型,因为char类型实际存储的是整数而不是字符。

  2. 计算机使用数字编码来处理字符,即用特定的整数表示特定的字符。(如:ASCII码、EBCDIC编码)

  3. 标准的ASCII码的范围是0-127,只需要7位二进制数表示。

1、声明、字符常量和初始化
char broiled;	//声明一个char类型的变量broiled
broiled = 'T';	//为变量赋值“T”
broiled = T;	//错误!!T 在此为一个变量
broiled = "T";	//错误!!“T”在此表示字符串char grade = 65;	//因为字符是以数值方式储存的,所以可以用数字代码来赋值。但是!不建议这样做。
2、非打印字符

单引号只适用于字符、数字、和标点符号,不能打印一些代表行为的字符(如:退格,换行,蜂鸣等)。

**方法一:**例如蜂鸣字符的ASCII码是7

char beep = 7

**方法二:**使用转义序列

\a 报警;\b 退格;\f 换页;\n 换行 。。。。等

**方法三:**用十六进制形式表示字符常量

3、打印字符

printf();函数用 %c 指明待打印的字符。

#include<stdio.h>
int main()
{char ch;printf("Please enter a character.\n");scanf("%c",&ch);	//用户输入的字符printf("The code for %c is %d.\n",ch,ch);return 0;
}
3.4.4 _Bool类型

_Bool类型用于表示布尔值,即逻辑值 true 和 false 。

只占用1位存储空间

3.4.5可移植类型:stdint.h 和 inttypes.h

两个头文件 stdint.h 和 inttypes.h ,确保C语言的类型在各系统功能中相同。

  1. 精确宽度整数类型:int32_t ----> int
  2. 一些类型名保证所示的类型一定是至少有指定宽度的最小整数类型。最小宽度类型。int_least8_t 是可容纳8位有符号整数值的类型中宽度最小的类型的一个别名。
  3. 最快最小宽度类型:int_fast8_t

可移植的输入输出。

/*altnames.c -- 可移植整数类型名*/
#include<stdio.h>
#include<inttypes.h>	//支持可移植类型
int main(void)
{int32_t me32;	// me32是一个32位有符号整型变量me32 = 45933945;printf("me32 = %d\n",me32);printf("me32 = %" PRID32 "\n",me32);return 0;
}
3.4.6 float、double 和 long double
  1. 浮点数类型有:float、double 和 long double类型

  2. 浮点数的表示类似于科学计数法。

  3. float 类型必须至少能表示6位有效数字。

  4. 通常一个浮点数要占用32位。其中8位用于表示指数的值和符号,剩下的24位用于表示非指数部分(尾数或有效数)及其符号

  5. double 类型(意为双精度),至少必须能表示10位有效数字。一般double类型占用64位。

1、声明浮点型变量
float noah;
double trouble;
float planck = 6.63e-34;
long double gnp;
2、浮点型常量
-1.56E+12
2.87e-3

浮点型常量的基本形式:有符号的数字(包括小数点),后面紧跟 e 或 E ,最后是一个有符号数表示10的指数。

正号可以省略

可以没有小数点(如,2E5)或指数部分(如,19.27)。不能同时省略两者

可以省略小数部分(如,3.E16)或整数部分(如,.45E-6)。不能同时省略

不可在浮点型常量之间加空格。

3、打印浮点值
/* showf_pt.c -- 以两种方式显示float类型的值 */
#include<stdio.h>
int main(void)
{float aboat = 3200.0;double abet = 2.14e9;long double dip = 5.32e-5;printf("%f can be written %e\n",aboat,aboat);return 0;
}

输出:32000.000000 can be written 3.200000e+04

4、浮点值的上溢和下溢

当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢。

float toobig = 3.4E38 * 100.0f;
printf("%e\n",toobig);

计算过程中损失了原末尾有效位上的数字。叫做下溢。

C语言把损失了类型全精度的浮点值称为低于正常的浮点值。

3.4.7 复数和虚数类型

复数类型:float_Complex 、 double_Complex 和 long double_Complex

虚数类型:float_Imaginary 、 double_Imaginary 和 long double_Imaginary

3.4.8 类型大小
/* typesize.c -- 打印类型大小 */
#include<stdio.h>
int main()
{printf("Type int has a size of %zd bytes.\n",sizeof(int));printf("Type char has a size of %zd bytes.\n",sizeof(char));printf("Type long has a size of %zd bytes.\n",sizeof(long));printf("Type long long has a size of %zd bytes.\n",sizeof(long long));printf("Type double has a size of %zd bytes.\n",sizeof(double));printf("Type long double has a size of %zd bytes.\n",sizeof(long double));return 0;
}

3.5 使用数据类型

编写程序时,应注意合理选择所需要的变量以及类型

使用变量前必须先声明

3.6参数和陷阱

传递给函数的信息称为参数

要确保转换说明的数量。类型与后面参数的数量、类型相匹配


http://www.ngui.cc/el/5281499.html

相关文章

CAN总线数据帧

CAN总线数据帧 1,帧起始(SOF) 标识一个数据帧的开始,用于帧同步 一个显性位 只有总线在空闲期间节点才能够发送SOF 2、ID 用于确定唯一一条报文 标准帧有11位,扩展帧有29位。 3、RTR位 用于区分数据帧和远程帧,数据帧=0,远程帧=1 4、IDE位 用于区分标准帧和扩…

PHP memcached 扩展使用

作者:silenceper 日期&#xff1a;2013-09-17 原文地址:http://silenceper.com/archives/921.html 在之前初学的时候 以为php的扩展memcache 与memcached 是同一个东西&#xff0c;现在看起来&#xff0c;memcached 比memcache好&#xff0c;php扩展memcache 是原生实现的&am…

PHP扩展学习:编写一个类

作者:silenceper 日期&#xff1a;2013-09-17 原文地址:http://silenceper.com/archives/876.html 代码太多&#xff0c;查看原地址吧&#xff1a;http://silenceper.com/archives/876.html

redis/php redis扩展 安装

作者:silenceper 日期&#xff1a;2013-10-03 原文地址:http://silenceper.com/archives/952.html 我是在CentOS 6.3 中进行的。 使用到的软件: redis 2.6.16 &#xff1a;http://download.redis.io/releases/redis-2.6.16.tar.gz tcl &#xff1a; http://prdownloads.sourcef…

redis持久化以及主从服务器的配置

作者:silenceper 日期&#xff1a;2013-10-03 原文地址:http://silenceper.com/archives/959.html redis 与memcached 最大的一个区别就是Redis支持数据的持久化&#xff0c;可以将内存中的数据保持在磁盘中&#xff0c;重启的时候可以再次加载进行使用。 一、redis提供的持久化…

有趣的网站404错误设计欣赏

如果一个用户看到一个普通的404错误页面他或许不会多做一些停留。而如果一个有创造性的404页面它肯定会激发访客多做一些停留来研究这个页面。所以想让你的404页面多一些访客量停留那就在上面多一些创造性的空间。 今天站长素材专门收集了50个很有趣的404创意页面&#xff0c;里…

菜单栏滑动效果

效果图: 下载地址&#xff1a;http://sc.zzblo.com/js/201311/83.html

radioGroup中radiobutton不能互斥问题

最近在写有关兼职项目时&#xff0c;用到Radiogroup 来包含Radiobutton &#xff0c;这本应该是最简单的事情&#xff0c;结果硬是弄了半个小时&#xff0c;radiobutton 老是到不到相互排斥的效果&#xff0c;在查阅相关资料后才发现&#xff0c;radiobutton 要想达到点击后相互…

android studio 导入、移除module、以及加载module中的jar包

一、在android studio中导入module 关于如何在自己的项目中导入module&#xff0c;网上其实已经有许多这样的博客。在这里&#xff0c;我就简单分享一下。 在File-->New-->import Module 就会出现如下界面&#xff0c;点击红色箭头所指处&#xff0c;选择你需要导入的m…

C语言基本数据结构之一(线性链表的增,删,改,查及倒序)

这学期刚好学了计算机软件基础&#xff0c;便顺带把C的基本数据结构过一遍&#xff0c;在期末的时候抽空整理了一下知识点&#xff0c;以免以后忘记了&#xff0c;如有错误&#xff0c;希望大家能帮忙改正 废话不多说&#xff0c; 直接上代码&#xff0c;里面注释也相对详细 …