C-数据和C
1.常量与变量数据
有些数据在程序使用之前预先设定,并在整个运行过程中没有变化,叫做常量。另外的数据在程序运行过程中可能变化或被赋值,叫做变量。
2.数据类型关键字
对于变量,编译器通过声明语句中指定的数据类型来判断其类型;对于常量,编译器通过其书写来辨认其类型。
C的数据类型关键字(12个):
K&R关键字:int,long,short,unsigned,char,float,double。
C90关键字:signed,void。
C99关键字:_Bool,_Complex,_Imaginary。
3.C全部基本数据类型
C基本数据类型分为两大类:整数类型,浮点数类型。(在计算机中的存储方式不同)
整型默认为有符号类型signed,可以unsigned修饰为无符号类型;浮点型都是有符号类型,不可用signed和unsigned修饰。
在基本数据类型所占空间大小的排列中,C语言只规定后者不小于前者,例如,在32位计算机中,int占32位,short占16位,long占32;float占32位,double占64位。
int(整型常量默认类型)
short = short int(修饰词➕int,int可省略)
long = long int
long long = long long int
unsigned = unsigned int
unsigned short = unsigned short int
unsigned long = unsigned long int
unsigned long long = unsigned long long int
char (技术实现上char是按整数类型存储的,有的机器上是signed型,有的是unsigned型)
signed char/unsigned char(用来表示小整数)
_Bool(按整数类型存储,只有两个值0,1,表示false,true)
float
double(浮点型常量默认类型)
long double
void
float_Complex(复数类型,包含两个float值,一个表示复数的实部,一个表示复数的虚部;下面类似)
double_Complex
long double_Complex
float_Imaginary(虚数类型;下面类似)
double_Imaginary
long double_Imaginary
4.位,字节,字
位(bit,b),是计算机存储的基本单位,是最小的存储单位,仅能表示两个值0,1(高低电位,两种状态)
字节(Byte,B),标准定义是1Byte=8bit,这种标准常用在衡量存储容量大小,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB,1PB=1024TB,1EB=1024PB。
C语言中,char类型数据在内存中占用的位数就是一字节的位数。
字(word),对于给定的计算机设计,字是自然的存储单位。对于一个32位机,1字就是32位。一般int类型数据在内存中占有的位数等于一字。
5.整数与浮点数的存储
整数直接以对应二进制编码存储(不考虑原码,反码,补码)。浮点数表示法将一个数分为小数部分和指数部分分别存储(e计数法)。有符号型的还有符号位。
浮点数只是实际值的近似,一些算术运算中,使用浮点数会损失更多精度。
6.int
变量声明:
声明语句为变量创建,标定存储空间,并为其指定初始值。
int a;
int b;
int a, b;
变量赋值:
a = 10;(直接赋值)
scanf(“%d”,&b);(输入函数赋值)
int a=10, b=20;(初始化变量)
常量:
C把不含小数点和指数的数当作整数。C把大多数整数看作int类型。
前缀0表示八进制,0X表示十六进制;后缀U,unsigned型,后缀L,long型,后缀LL,long long型。
打印:
printf(“%d,%o,%#o”,a,b,b);转换说明符与变量个数和类型必须一一匹配。
转换说明符:
%[-][数字串[.数字串]]字母
-表示左对齐
左数字串(域宽),表示输出的最小宽度,不够左补空
右数字串(精度),表示小数点后保留的位数,多截少右补零
%d 转换为带符号的十进制数输出
%hd
%ld
%u 不带符号的十进制数输出
%lu
%o 不带符号的八进制数输出
%#o 显示0前缀
%x 不带符号的十六进制数输出
%#x 显示0x前缀
%c 单个字符输出
%s 字符串输出
%f [-]mmmm.nnnnnn(无阶码浮点数)输出
%e [-]m.nnnnnn[+/-]kk(有阶码浮点数)输出
%g %f或%e格式中较短的一个
%% 表示%本身
在scanf()中,%字母间可加入域宽和抑制赋值符*
scanf(“%*4s%c”,&a);先读取域宽为四个字符的字符串丢弃,然后读取一个字符,赋值给变量a。
整数溢出问题:
整数太大,超出了整数类型的表示范围,造成整数溢出。C语言规定了无符号整数溢出规则:溢出到起始点。有符号整数溢出类似。
7.char
char类型的实际存储是整型,计算机采用一种数字编码,用特定的数字表示特定的字符。ASCII码,Unicode码。
C语言中把一个字节定义为char类型占用的位数。
声明:
char a,b;
常量:
‘A’,单个字符的书写用单引号括起来。
初始化:
char a=‘A’;
char a=65;
在ASCII码中,65表示‘A’,但不是所有系统采用ASCII码,所以建议使用字符常量,而不是数值编码。
对于非打印字符的表示,C提供了3中方法:ASCII码,转义字符,八进制和十六进制ASCII码(\0oo 八进制值,\xhhh 十六进制值)
注意数字和数字字符的区别。
转义字符:
\a 报警
\b 退格
\f 走纸
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\\ 反斜杠\
\' 单引号'
\'' 双引号''
\? 问号?
\0oo 八进制值
\xhhh 十六进制值
打印:
char a='A';
printf("%d,%c",a);
注意:char类型实际上是按int整型存储的。%d转换说明符会输出65,即ASCII码表中‘A’对应的数值,%c转换说明符会输出字符‘A’。
8._Bool
_Bool型实质上也是整型。C中用0表示false,用非0表示true。
9.float,double,long double
浮点型计数方式:小数,指数(e计数法,10的指数)
float一般占位是一个字,浮点数常量默认是double型。
声明:
float a;
doubel b;
long double c;
常量:
0.6;.6;6.0;6.;8E-5;.8e4
可以没有小数点或着没有指数,不能同时没有。指数部分必须是整数。后缀F,L,LL。
打印:
%f,%e
浮点数的上溢下溢:
大到无法表示,上溢;小到损失精度,下溢;
C将损失了类型精度的浮点值称为“低于正常的”。
10.C从基本数据类型衍生出了其他类型:数组,指针,结构体,枚举,联合。
11.运算符sizeof(int)
C的内置运算符sizeof以字节为单位给出类型的大小。char类型肯定是1字节,因为C把char类型的占位长度定义为一字节。(这里的1字节不一定是8位)
12.自动转换
整数常量默认int,浮点数常量默认double
表达式中,编译器会统一类型,再进行运算,再将结果转换为左值类型。
自动转换一般以短就长;长赋值短会出问题,如浮点数赋值给整型变量,会直接截尾,简单的丢弃小数部分,不会进行四舍五入。double赋值给float会丢失精度,float只能保证前6位是精确的。
系统化的命名规则,让变量名能表示它的类型。
13.刷新输出
printf()函数将输出传递给一个被称为缓冲区buffer的中介存储区域,缓冲区里的内容再不断的被传递给屏幕。
标准C规定在一下3中情况下,将缓冲区内容传递给屏幕:缓冲区满的时候,遇到换行符\n的时候,需要输入的时候,fflush()函数。
将缓冲区的内容传递给屏幕或文件叫做刷新缓冲区。
C-数据和C的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- SQL Server 大数据搬迁之文件组备份还原实战
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...
- SQLSERVER将一个文件组的数据移动到另一个文件组
SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...
- 【.net 深呼吸】设置序列化中的最大数据量
欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
- 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇
什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...
- 恢复SQL Server被误删除的数据(再扩展)
恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
随机推荐
- 团体程序设计天梯赛-练习集-L1-041. 寻找250
L1-041. 寻找250 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字. 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中 ...
- MySQL NULL 值如何处理?
我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MySQL提 ...
- Python—字符串+变量
字符串转义字符格式化内建函数(后延)转义字符用一个特殊的方法表示出一系列不方便写出的内容,比如回车键,换行键,退格键借助反斜杠字符,一旦字符串中出现反斜杠,则反斜杠后面一个火几个字符表示已经不是原来的 ...
- PAT_A1098#Insertion or Heap Sort
Source: PAT_A1098 Insertion or Heap Sort (25 分) Description: According to Wikipedia: Insertion sort ...
- Python画三维图-----插值平滑数据
一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...
- 【编程工具】Vim编辑器的使用
1.Vim简介 Vim最初起源于古老的贝尔实验室,由"Bram Moolenaar等人"开发,是一个功能强大的文本编辑器,被推崇为类Vi编辑器中最好的一个. Vim是一个类 ...
- (C/C++学习)3.C++中cin的成员函数(cin.get();cin.getine()……)
说明:流输入运算符,在一定程度上为C++程序的开发提供了很多便利,我们可以避免C语言那种繁琐的输入格式,比如在输入一个数值时,还需指定其格式,而cin以及cout则不需要.但是cin也有一些缺陷,比如 ...
- [bzoj1860 ZJOI2006] 超级麻将 (线性dp)
传送门 Description Input 第一行一个整数N(N<=100),表示玩了N次超级麻将. 接下来N行,每行100个数a1..a100,描述每次玩牌手中各种牌的数量.ai表示数字为i的 ...
- PHP和zookeeper结合实践
Zookeeper 简单介绍 Apache Zookeeper是开发和维护开源服务器的服务,它能够实现高度可靠的分布式协调. 安装Zookeeper(无需安装) wget http://mirror. ...
- hdu 1384 查分约束
#include<stdio.h> /* 要善于挖掘隐含条件 dis[v]-dis[u]>=bian[i].w;一个条件(u,v,bian[i].w); dis[i+1]>=d ...