01 您所在的位置:网站首页 c语言float函数输出 01

01

2023-06-19 06:53| 来源: 网络整理| 查看: 265

一 变量和常量 1.1 标识符

1、在我们所写的“第一个C程序”中出现了很多的标识符,例如include、main、printf、return。标识符是⽤来标识变量、函数,或任何其他⽤户⾃定义项⽬的名称。 2、标识符的约束规范:

只能包含数字、字母和下划线不能以数字开头区分大小写 1.2 关键字

1. 当我们在使用C语言进行编程时,某些标识符会被用来表示特殊的含义或者作用并且不能用作他 用,我们就称这些标识符为关键字。 2. C语言提供了32个关键字:

1) 数据类型关键字(12个) char、short、int、long、float、double、unsigned、signed、struct、union、enum、void2) 控制语句关键字(12个) if、else、switch、case、default、for、do、while、break、continue、goto、return3) 存储类关键字(5个) auto、extern、register、static、const4) 其他关键字(3个) sizeof、typedef、volatile 1.3 C语言中的数据类型

在实际开发过程中我们需要处理各种类型的数据,C语言提供的数据类型如下图所示:

1.4 常量 在程序运行过程中,其值不能被改变的量常量一般出现在表达式或赋值语句中单引号是字符,双引号是字符串!!!

1.5 变量

变量的定义:

我们可以把变量理解为一个存储数据的容器在程序运行过程中其值可以被改变变量在使用前必须要被定义变量定义的语法:type variable_list 在这⾥,type 必须是⼀个有效的 C 数据类型,可以是 char、int、float、double 或任何⽤ 户⾃定义的对象,variable_list 可以由⼀个或多个标识符名称组成,多个标识符之间⽤逗号分隔。下⾯列出⼏个有效的声明: int i, j, k; char c, ch; float f, salary; double d; 变量一旦被定义就在内存上占用了一块对应大小的空间

变量的命名规则:

遵循标识符的命名规范不能使用关键字见其名知其义,在实际开发过程中,我们一般建议使用英文单词或者英文单词的缩写作为变量名

常用变量名:

tmp:临时变量cnt:计数器 二 整型:int

1. 各种整型类型的使用和对比

2. 可以通过 sizeof 关键字获取某个数据类型所占用的空间 

printf("%d\n", sizeof(short)); //2 printf("%d\n", sizeof(int)); //4 printf("%d\n", sizeof(long)); //4 printf("%d\n",sizeof(long long)); //8

3. 字节(Byte)和比特(bit)

bit位,即0或者1,0101010110Byte字节,8位比特作为一个字节,字节是处理数据的基本单位1Byte= 8bits1KB = 1024Bytes1MB = 1024KB1GB =1024MB注意:B和b的区别

4. 数据总线

输出数据总线的根数越多,数的表示范围也越大

5. 有符号数和无符号数取值范围

总结:软件开发过程中如果我们知道需要存储的数据不会为负数时,变量可以定义为无符号的整 数,这样可以扩大能够存储的最大正整数的值 6. 整型数据的表示 

7. 整型数据的打印格式 

#include int main() { short a = 10; int b = 10; long c = 10l; //或者10L long long d = 10ll; //或者10LL printf("sizeof(a) = %u\n", sizeof(a)); printf("sizeof(b) = %u\n", sizeof(b)); printf("sizeof(c) = %u\n", sizeof(c)); printf("sizeof(c) = %u\n", sizeof(d)); printf("short a = %hd\n", a); printf("int b = %d\n", b); printf("long c = %ld\n", c); printf("long long d = %lld\n", d); unsigned short a2 = 20u; unsigned int b2 = 20u; unsigned long c2= 20ul; unsigned long long d2 = 20ull; printf("unsigned short a = %hu\n", a2); printf("unsigned int b = %u\n", b2); printf("unsigned long c = %lu\n", c2); printf("unsigned long long d = %llu\n", d2); return 0; } 三 字符型:char 

1. 字符型变量用于存储一个单一字符 2. char 和 unsigned char 定义变量 3. 每个字符变量都会占用 1 个字节(1 Byte) 4. 用一对英文半角格式的单引号(' ')引用 5. 使用 %c 输出

#include int main() { char ch = 'A'; printf("char: %c\n", ch); return 0; }

6. 字符在内存中存储时是以这个字符的ASCII编码进行存储的:

char的本质就是一个1字节大小的整型 char ch; ch = 'A'; //ch

ASCII 码大致由以下两部分组成:

ASCII 非打印控制字符: ASCII 表上数字 0-31 分配给了控制字符,用于控制打印机等一些外围设备。ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。数字 127 代表 Del 命令。

7. 大小写转换

大写转小写:+32 / +0x20小写转大写:-32 / -0x20 #include int main(){ //字符型数据 char ch; ch = 'A'; printf("char: %c\n", ch); //A ch = 65; printf("65: %c\n", ch); //A printf("65: %d\n", ch); //65 printf("A : %c\n", 'A'); //A printf("A -> a: %c\n", 'A'+32); //a return 0; }

8. 整数的字符形式

整数转字符形式: +48 / +'0'字符形式转整数: -48 / -'0'

9. 转义字符

四 实型(浮点型):float、double 实型变量也可以称为 浮点型变量,浮点型变量是用来存储小数数值的。在C语言中, 浮点型变量分为两种: 单精度浮点数(float)、 双精度浮点数(double), 但是double型变量所表示的浮点数比float 型变量更精确。由于浮点型变量是由有限的存储单元组成的,因此只能提供有限的有效数字。在有效位以外的数字将被舍去,这样可能会产生一些误差。不以f结尾的常量是double类型,以f结尾的常量(如3.14f)是float类型。 #include int main() { //传统方式赋值 float a = 3.14f; //或3.14F double b = 3.14; printf("a = %f\n", a); printf("b = %lf\n", b); //科学法赋值 a = 3.2e3f; //3.2*1000 = 3200,e可以写E printf("a1 = %f\n", a); a = 100e-3f; //100*0.001 = 0.1 printf("a2 = %f\n", a); a = 3.1415926f; printf("a3 = %f\n", a); //结果为3.141593 return 0; } 4.1 进制

进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

4.1.1 二进制

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。十进制转化二进制的方法:用十进制数除以2,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。十进制的小数转换成二进制:小数部分和2相乘,取整数,不足1取0,每次相乘都是小数部 分,顺序看取整后的数就是转化后的结果。 五 计算机内存数值存储方式

1 在计算机系统中,数值一律用补码来存储。

2. 补码的特点

对于正数,补码就是原码(原始的二进制)对于负数,其补码为它的反码加1负数的反码:绝对值的原码取反 #include int main() { int a = -15; printf("%x\n", a); //结果为 fffffff1 //fffffff1对应的二进制:1111 1111 1111 1111 1111 1111 1111 0001 //符号位不变,其它取反:1000 0000 0000 0000 0000 0000 0000 1110 //上面加1:1000 0000 0000 0000 0000 0000 0000 1111 最高位1代表负数,就是-15 return 0; }

3. 经典笔试题

int a = 5; unsigned int b = a-10; printf("%d\n", a > b); 六 关于printf(“%f\n”,3/2)

通过运行程序我们发现程序的输出结果是 0 !! 我们首先要明白一个问题,在C语言里面,除数和被除数都是整数的时候,商的类型也是个整数。 比如这里的3/2,得到的不是1.5,而是下取整之后的结果1。 我们知道整数1在内存中存储时的二进制为:0000 0000 0000 0000 0000 0000 0000 0001 ,可是 我们在输出结果时,计算机会将整个二进制当成浮点数来处理,那么问题来了:这个二进制所表示 的浮点数到底是多少呢?

下面,让我们来一起揭开浮点数存储的神秘面纱:

浮点数的存储遵循的是 IEEE754 标准,任意一个二进制浮点数可以表示成下面的形式:

6.1 例1

已经浮点数的二进制形式,计算浮点是的十进制值:

6.2 例2

已知一个十进制浮点数,计算二进制形式:

在了解了浮点数在内存中的存储方式了以后,下面我们来看看1的二进制如果转换成浮点数会 是多少呢? 显然,符号为0,那么s为0 阶码E也为0,则指数e = 阶码E - 127 = -127 M是多少呢,很显然是2的-23次方,约等于0 所以最终的结果就为0啦 ~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有