C语言中数据的表现形式及其运算

1. 常量和变量

1.1 常量

在程序运行过程中,其值不能被改变的量称为常量。如1000,0.0036,0.0025是常量。数值常量就是数学中的常量。

(1)整型常量。如1000,12345,0,-324等都是整形常量
(2)实型常量。有两种表现形式:

①十进制小数形式,由数字和小数点组成。如123.456,0.12,-56.79等
②指数形式。如12.34e3,-123.87e等,

(3)字符常量。有两种形式的字符常量

①普通字符,用单撇号括起来的一个字符,如:‘a’, ‘Z’ , ‘3’ , ‘?’。不能写成 ‘ab’ 或 ‘12’ 。
请注意:单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。‘a’ 和 ‘A’ 是不同的字符常量。
字符常量存储在计算机存储单元中,并不是存储字符本身,而是其代码(一般采用ASCII代码)存储的。
例如字符 ‘a’ 的ASCII代码是 97,因此,在存储单元中存放的是97(以二进制形式存放)。

②转义字符,除了以上形式的字符常量外,C语言还允许用一种特殊形式的字符常量,就是以字符""开头的字符序列。例如printf函数中的 ‘\n’ 代表一个 "换行"符。 ‘\t’ 代表将输出的位置跳到下一个Tab位置。这是一种在屏幕上无法显示的 “控制字符”,在程序中也无法一个一般形式的字符来表示,只能采用这种特殊形式来表示。

(4)字符串常量

如"boy","123"等,用双撇号把若干个字符括起来,字符串常量是双撇号中的全部字符。

(5)符号常量

用#define 指令,指定用一个符号名称代表一个常量,例如:
#define PI 3.1415
这种用一个符号名代表一个常量的,称为符号常量,有以下好处:

①含义清楚。看程序从PI就可以大致知道它代表圆周率,考虑了“见名知意”。
②在需要改变程序中多处用到的同一个常量时,能做到”一改全改“。

1.2 变量

变量代表一个有名字的、具有特点属性的一个存储单元。它用来存放数据,也是存放变量的值。在程序运行期间,变量的值可以改变的。

变量需要先定义,后使用。定义变量时指定该变量的名字和类型。变量名和变量值是两个不同的概念。
变量名实际上是一个名字代表的一个存储地址。

1.3 常变量

C99允许使用常变量,方法是在定义变量时,前面加一个关键字const,例如:

const int a = 3;定义a为一个整型变量,指定其值为3,而且在变量存储期间其值不能改变。

常变量和变量的异同是:
常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。

1.4 标识符

在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为 标识符
C语言规定标识符只能由字母、数字、下划线三种字符组成,且第一个标识符必须为字母或下划线。

注意:编译系统认为大写字母和小写字母是两个不同的字符,因此,sum和SUM是两个不同的变量名,同样class和Class也是两个不同的变量名。

2.数据类型

所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。

其中,基本类型(包括整型和浮点型)和枚举类型变量的值都是数值,统称为算术类型。
算术类型和指针类型统称为纯量类型,因为其变量的值是以数字来表示的。
枚举类型是程序中用户定义的整型类型。数组类型统称为组合类型,共用体类型不属于组合类型,因为同一个时间内只有一个成员有值。不同类型的数据在内存中占用的存储单元长度是不同的,比如在VC++编译器中char型数据分配一个字节,int型分配4个字节。

2.1整型数据

2.1.1整型数据的分类

(1)基本整型(int型)

编译系统分配给int型数据2个字节或4个字节(由具体的C编译系统自行决定)。
在存放整数的存储单元中,最左边一位是用来表示符号的。如果该数为0,表示数值为正;如果该数为1,表示数值为负。

(2)短整型(short int)

VC++ 编译器中分配给int 4个字节,则short int 短整型2个字节。

(3)长整型(long int)

类型名为long int 或long 。VC++编译器对一个long型数据分配4个字节(即32位)。
因此lont int 型变量的范围为 -2的31次方~(2的31次方-1)。

(4)双长整型(long long int)

类型名为 long long int或 long long。一般分配八个字节。

C标准没有具体规定各种类型数据所占用存储单元的长度,这是由各编译器系统自行决定的。C标准只要求Long型数据长度不短于int 型,short型不长于 int型。即:
sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

2.1.2整型变量的符号属性

整型数据常见的存储空间和值的范围见下图

类型 字节数
int(基本类型) 4
unsigned int(无符号基本整型) 4
short(短整型) 2
unsigned short(无符号短整型) 2
long(长整型) 4
unsigned long(无符号长整型) 4
long long(双长型) 8
unsigned long long(无符号双长整型) 8

说明:

1.只有整型(包括字符型)数据可以加signed 或unsigned 修饰符,实型数据不能加。
2.对无符号整型数据用 “%u” 格式输出。 %u 表示用无符号十进制数的格式输出。

2.2字符型数据

2.2.1字符与字符代码

字符与字符代码并不是任意写一个字符,程序都能识别的。只能使用系统的字符集中的字符,目前大多数系统采用ASCII字符集。其中包括:
字母:大写英文字符 A~Z, 小写英文字母 a~z。
数字:0~9
专门符号:29个,包括 ! : # &’ + , - . / : ; < = > ? [] ^ _ ; ` { | } ~
空格符:空格、水平制表符(tab)、垂直制表符、换行、换页(form feed)。
不能显示的字符:空(null)字符(以 ‘\0’ 表示)、警告(以 ‘\a’ 表示)…
注意

字符 ‘1’ 和整数1是不同的概念。字符 ‘1’ 只是代表一个形状为 ‘1’ 的符号,在需要时按原样输出,在内存中以 ASCII码形式存储,占一个字节;而整数1是以整数存储方式存储的,占2个或者4个字节。
整数运行1+1=2,而字符 ’1‘ + ’1‘ 并不等于2或 字符 ’2‘。

2.2.2字符变量
字符变量是用类型符 char 定义字符变量。char 是英文character(字符)的缩写,如:

char c= '?';定义c为字符型变量并使初值为字符 '?'。 '?' 的ASCII 代码是63,系统把整数63赋给变量c。

说明: 用"%d"格式输出十进制整数63,用"%c"格式输出 字符 ’ ? ’。

前面介绍了整型变量可以用signed 和 unsigned修饰符表示符号属性,字符类型也属于整形,也可以用signed 和 unsigned 修饰符。

说明:在使用有符合字符型变量时,允许存储的值为 -128~127,但字符的代码不可能为负值,所以在存储字符时实际上只用到0-127这一部分。

2.2.3 浮点型数据
浮点型数据包括 float (单精度浮点型)、double(双精度浮点型)、longlong(长双精度浮点型)。
(1)float型(单精度浮点型)。编译系统位每一位float型变量分配四个字节,在存储时,系统将实型数据分成小数部分和指数部分两个部分。
(2)double型(双精度浮点型)。为了扩大能表示的数值范围,在C语言进行浮点数的算术运算时,将float型数据字段转换为double 型,然后进行运算。
(3)long double型(长双精度)型。

注意 类型 和 变量 的关系。
每一个变量都属于一个确定的类型,类型是变量的一个重要的属性。变量是占用存储单元的,是具体存在的实体,在其占用的存储单元中可以存放数据。
而类型是变量的共性,是抽象的,不占存储单元,不能用来存放数据。

本文来源 《C程序设计》谭浩强

C语言中数据的表现形式及其运算相关推荐

  1. C语言:顺序程序设计(思维导图)——数据的表现形式及运算、运算符和表达式~~ 铁汁们可以观看图片和文件进行观看思维导图哈

    顺序程序设计(思维导图)--数据的表现形式及运算.运算符和表达式 后续跟大家分享C语言学习经历噢. 图片下载放大学习哈. 本人思维导图在幕布app中编写,把文件拖到app学习效果更佳哈.

  2. c语言的左移运算,C语言中的左移和右移运算.docx

    C 语言中的左移和右移运算 C 语言中的左移和右移运算 (>> 和 < 1.各种数据格式(整型int ,字符型 char 等)占有几个存储单元(不同的编译器有所不同) 在TC2.0和 ...

  3. c语言中数据的输入输出格式解析

    数据的输入和输出 在C语言中数据的输入和输出都是通过函数调用来实现的 整型数据的输入输出 调用函数为printf和scanf 格式为printf("%d",x): scanf(&q ...

  4. 谈谈你对c语言中数据(各种常量,变量,函数参数,字符串)的存储认识,自考《高级语言程序设计》知识点总结(二)...

    2.1 C语言的数据类型 数据类型包含两方面的内容:数据的表示和对数据加工的操作.数据的全部可能表示构成数据类型的值的集合.数据全部合理的操作构成数据类型的操作集合. 在C语言中,把整型.实型和字符型 ...

  5. c语言中字符串的加法运算,C语言中字符串的存储和运算

    字符串是程序设计中一个重要的数据结构(在经典的数据结构教材中,字符串是作为一章来独立讲解的,从这里也能看出字符串是程序设计中的一个重要的数据结构),然而C语言中竟然没有专门的字符串变量.C中如何来处理 ...

  6. c语言科学计数法_C入门:C语言中数据的储存(上)

    How Data is stored in computer memory? 储存数据是计算机进行各种数据操作的基础,为了理解计算机可以对哪些数据进行怎样的操作,有必要了解数据在计算机中的储存方式. ...

  7. 408中数据的表示和运算【超强总结】

    文章目录 思维导图 数据的表示和运算 1.无符号整数的表示和运算 无符号整数的表示 无符号整数的加减运算 2.有符号整数的表示和运算 有符号整数为什么要用补码运算 有符号整数补码的加法 有符号整数补码 ...

  8. c51语言中数据的存储类型,C51-数据存储类型

    KEILCx51是面向8051系列单片机及其硬件控制系统的开发工具.它定义的任何数据类型必须以一定的存储类型的方式定位在8051的存储区中,否则便没有任何的实际意义.该编译器通过将变量.常量定义成不同 ...

  9. c语言中减号算一个字符吗,C语言中指针的加减运算

    char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; printf(&q ...

最新文章

  1. 【Android】换肤技术讲解
  2. r语言模型评估:_情感分析评估:对自然语言处理的过去和未来的反思
  3. python selenium下载,在python中通过Selenium Webdriver下载文件
  4. Ajax Loading进度gif在线生成
  5. 用babel cli编译用ES6写的JSX
  6. Asp.net中关于上传文件的各项基本操作
  7. ubuntu需要多大的固态硬盘_Ubuntu16.10 迁移到 SSD
  8. C#开启和关闭UAC功能
  9. 计算机二级foxpro,计算机二级Visual FoxPro的练习试题和答案
  10. 强化学习算法三个基线策略
  11. vue2 配置本地IP地址访问项目
  12. Amazon UK 可通过EDI实现哪些业务单据对接?
  13. 启xin宝app的token算法破解——逆向篇(二)
  14. SCI论文全攻略:选刊/投稿/修回与退稿(ZZ)
  15. Android实现内录
  16. php curl exec 返回值,php curl_exec()函数 CURL获取返回值的方法
  17. FX3U PLC源代码,stm32芯片。 全套硬件,软件源码,可以直接用GX Works2编程直接写入
  18. 辅助继电器的作用与类型 如何区分直流和交流继电器
  19. Windows 便捷工具箱 Microsoft PowerToys
  20. 2023年广州深圳市两融开户佣金和融资融券利息率最低多少?哪个券商最低?支持量化交易

热门文章

  1. 国内怎么captcha测试_通过简单的数字测试或PHP图像处理使CAPTCHA更友好
  2. 收集广州周边徒步线路
  3. 什么是OA系统的工作流?
  4. 程序员讨厌没有价值的任务
  5. 听听别人怎么说:VueJS 与 ReactJS
  6. Pubwin EP 正式版完整安装全程-数据备份
  7. 强制卸载阿里云盾(安骑士)监控屏蔽云盾IP检测教程
  8. Linux中断机制(二)
  9. 计算机专业电脑需要显卡吗,组装电脑要不要配独立显卡?
  10. 苹果手机直播怎么投屏 苹果手机投影电脑屏幕