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的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  3. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  4. SQL Server 大数据搬迁之文件组备份还原实战

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...

  5. SQLSERVER将一个文件组的数据移动到另一个文件组

    SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...

  6. 【.net 深呼吸】设置序列化中的最大数据量

    欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...

  7. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  8. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  9. 恢复SQL Server被误删除的数据(再扩展)

    恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...

  10. 将表里的数据批量生成INSERT语句的存储过程 增强版

    将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...

随机推荐

  1. HDU_1269_tarjan求强连通分量

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. matlab学习使用Button Group绘制不同的正弦曲线

    创建buttongroup控件---即按钮组 再添加三个radiobutton 对其设置 buttongroup控件改Title为绘制不同正弦曲线 第一个radiobutton的string改为sin ...

  3. 51nod1134 最长递增子序列【动态规划】

    给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10. Input 第1行:1个数N ...

  4. [jzoj 5770]【2018提高组模拟A组8.6】可爱精灵宝贝 (区间dp)

    传送门 Description Branimirko是一个对可爱精灵宝贝十分痴迷的玩家.最近,他闲得没事组织了一场捉精灵的游戏.游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由1到n. ...

  5. NFS实时备份

    方法一(inotify+rsync): 1.安装inotify-tools(客户端)[监听工具],实现数据属实备份检查目录是否有如下文档,没有表示操作系统不支持 ls -l /proc/sys/fs/ ...

  6. java实现根据高德地图API接口进行地址位置解析,将地址转化为经纬度

    原创文章,转载请注明,欢迎评论和更改. 1,所需额外ar包,import net.sf.json.JSONObject; 2,完整源代码代码 package com.travel.util; impo ...

  7. nodejs获取post请求发送的formData数据

    前端post请求发送formData的类型数据时,需要服务端引入中间件body-parser,主要原因是post请求发送的数据,是在http的body里面,所以需要进行解析,否则获取不到数据(数据为空 ...

  8. 【hihocoder 1287】 数论一·Miller-Rabin质数测试

    [题目链接]:http://hihocoder.com/problemset/problem/1287 [题意] [题解] 取的底数必须是小于等于n-1的; 那12个数字能通过2^64以内的所有数字; ...

  9. ExtJs之Ext.ElementLoader.load

    稍微书上代码不适合. var btns = Ext.select('input'); 需要更改为: var btns = Ext.select('input', true); 不然报错: [E] Ex ...

  10. JQuery的wrap用法

    wrap是包裹元素的作用,比如我想在img外面包裹一个a标签时,可以这样写法: $(function(){ $('img').wrap(function(){ return '<a href=& ...