实型变量(浮点型变量)、字符型数据、字符串常量(变量)、字符常量(变量)

实型变量

1、实型变量的舍入误差
因为内存分配给实型变量的空间是有限的,所以当存储数据时,就会遇到舍入的问题,我们举个例子

void main()
{
float a,b;
a=123456.789e5;
b=a+20;
printf("%f\n",a);
printf("%f\n",b);
}

在这里插入图片描述

这个时候出现的结果就是这样,又因为a本身已经溢出了,加上20之后也是没产生变化的。

字符型数据

字符型数据包括字符常量和字符变量。

字符常量:用单引号括起来的一个字符。
例如:‘A’、‘M’ 都是合法字符常量。

在C语言中,字符常量有以下特点:
1)字符常量只能用单引号括起来,不能用双引号或其他括号。
2)字符常量只能是单个字符,不能是字符串。
3)字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如‘5’和5是不同的。‘5’是字符常量,不能参与运算。

字符变量
字符变量的类型说明符是char。字符变量类型定义的格式同整型变量:char a,b;

转义字符:
转义字符是一种特殊的字符常量。以反斜线“\”开头,后跟一个或几个字符。转义字符具有特定的含义,跟字符原有的意义相反,所以称为“转义字符”,比如程序中常见的\n,就是回车换行的意思。转义字符主要用来表示那些用一般字符不便于表示的控制代码。

转义字符的使用:

#include <stdio.h>

void main()
{
   int a,b,c;
   a=5;b=6;c=7;
   printf("ab c\tde\rf\n");
   printf("hijk\tL\bM\n");
}

这个程序最后输出的结果:
在这里插入图片描述
这里可以看到,通过使用转义字符,一些不太容易表示出来的字符都给表示出来了。

扫描二维码关注公众号,回复: 8907978 查看本文章

字符数据在内存中的存储形式及使用方法。

内存只分配给字符变量一个字节的空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。如x的十进制ASCII码是120,y的十进制ASCII码是121.对字符变量a,b赋予’X’和‘Y’值:
a = ‘X’;
b = ‘7’;
这里表示的是在a,b两个单元内存放120和55的二进制代码。

举个例子:

#include <stdio.h>
void main()
{
char a,b;
a = 120;
b = 121;
printf("%c,%c\n",a,b);
printf("%d,%d\n",a,b);
}

在放一下最后的输出结果:
在这里插入图片描述
可以很明显的看到。我们第一行是以字符形式输出(它会去找对应的ASCII表中的字符),第二行是以整型的形式打印出来,其实内存中存的二进制数就是120和121。同样的,将a = 120;替换成a = ‘x’;也是同样的效果。

【4.1】小写字母换成大写字母

#include <stdio.h>
void main()
{
char a,b;
a = 'a';
b = 'b';
a = a - 32;
b = b - 32;
printf("%c,%c\n%d,%d\n",a,b,a,b);//将a、b的字符形式显示出来,再将a,b的整型形式展现出来(即内存中存放的数值)
}

这段输出的结果如下:
在这里插入图片描述
为什么char内存分配的空间是一个字节呢?因为一个字节是8位,2^8是256,能容纳完整个ASCII表。

字符串常量:
由一对双引号括起的字符序列。例如"China",“boy"等都是合法的字符串常量。
字符串常量和字符常量是不同的量,字符常量由单引号括起来,字符串常量由双引号括起来;字符常量只能是单个字符,字符串常量则可以含一个字符或多个字符;可以将一个字符常量赋给一个字符变量,但是不可以将一个字符串常量赋给一个字符变量(k可以char a = ‘a’;但是不能char a = “a”;);字符常量占一个字节的空间,而字符串变量所占空间则为字符串中字节数加1,加的这个1就是字符串的结束标志”\0"(ASCII码为0)

发布了10 篇原创文章 · 获赞 1 · 访问量 1245

猜你喜欢

转载自blog.csdn.net/weixin_43671182/article/details/94336244