今天来说说起浮点型变量和字符型变量
顾名思义,浮点类型变量是用来存储带有小数的实数的。
C语言中有三种不同的浮点类型,以下是对这三种不同类型的声明示例:

float Amount; /单精度型/
 double; /双精度型/
 long double ; /长双精度型/

浮点型都是有符号的。
单精度浮点数:
通常占用4个字节(32位)存储空间,其数值范围为-3.4E38~3.4E38,单精度浮点数最多有7位十进制有效数字,单精度浮点数的指数用“E”或“e”表示。如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。

双精度浮点数:

通常占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。双精度完全保证的有效数字是15位,16位只是部分数值有保证。

输出 float 使用 %f 控制符,输出 double 使用 %lf 控制符,如下所示:

#include <stdio.h>
 #include <stdlib.h>
 int main()
 {
 float a=46548.101;
 float b=320.302;
 float c=1.23002398;
 double d=123;
 double e = 78.429;
 printf(“a=%f \nb=%f \nc=%f \nd=%lf \ne=%lf\n”, a, b, c, d, e);
 system(“pause”);
 return 0;
 }
 运行结果:
 a=46548.101563
 b=320.302000
 c=1.230024
 d=123.000000
 e=78.429000

对代码的说明:

  1. %f 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。
  2. 将整数赋值给 float 变量时会转换为小数。
  3. 小数默认为 double 类型,加上后缀f才是float类型。
  4. 由于内存有限,小数的精度受限,所以输出 a 时只能获得一个近似数。

字符型.
字符串,它是多个字符的集合,例如 “abc123”、“123\141\142\143”;当然也可以只包含一个字符,例如 “a”、“1”、"\63"。

不过为了使用方便,我们可以用 char 类型来专门表示一个字符,例如:

char a=‘1’;
 char b=’’;’;
 char c=‘X’;
 char d=’ ‘; // 空格也是一个字符
 char e=’\63’; //也可以使用转义字符的形式

char 称为字符类型,只能用单引号’ ‘来包围,不能用双引号" “包围。而字符串只能用双引号” "包围,不能用单引号’ '包围。

输出字符使用 %c,输出字符串使用 %s。
先看下面一段代码:

#include <stdio.h>
 #include <stdlib.h>
 int main()
 {
 char a = ‘E’;
 char b = 70;
 int c = 71;
 int d = ‘H’;
 printf(“a=%c, a=%d\n”, a, a);
 printf(“b=%c, b=%d\n”, b, b);
 printf(“c=%c, c=%d\n”, c, c);
 printf(“d=%c, d=%d\n”, d, d);
 system(“pause”);
 return 0;
 }
 输出结果:
 a=E, a=69
 b=F, b=70
 c=G, c=71
 d=H, d=72

在ASCII码表中,E、F、G、H 的值分别是 69、70、71、72。

字符和整数没有本质的区别。可以给 char 变量一个字符,也可以给它一个整数;反过来,可以给 int 变量一个整数,也可以给它一个字符。

char 变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII 码表转换成对应的字符;如果以 %d 输出,那么还是整数。

int 变量在内存中存储的是整数本身,当以 %c 输出时,也会根据 ASCII 码表转换成对应的字符。

#include <stdio.h>
 int main()
 {
 unsigned char A=‘0’;
 while(A<=170)
 {
 printf("%c\t",A);
 A++;
 }
 getchar();
 getchar();
 return 0;
 }

如该代码后面输出有问题 ascll码表127位后面是扩展的,一般是输出不出来的。

下面介绍怎莫输出后面的扩展位。

STM32F429怎么开启浮点运算 stm32浮点型定义_单精度


右键点击边框 选择默认值 然后点击 936()那一行 然后选择437(OE—美国),然后点击确定,在编译就会正确输出ascll扩展位了;

STM32F429怎么开启浮点运算 stm32浮点型定义_单精度_02


ascll码表算上扩展位有256位,0-127是可以直接输出的,后面的全部是扩展位,直接输出不了。

这就是今天需要说的