1         C语言中的数据类型

1.1      常量

常量就是在程序中不可变化的量

1.1.1         #define

#define MAX 10

Define;//定义了一个int型的常量

1.2      字符串常量

“hello world”

C语言“”都是字符串常量

1.3      二进制数、位、字节与字

我们习惯于十进制的数:10,12等

一个位只能表示0,或者1两种状态,简称bit

一个字节为8个二进制,称为8位,简称BYTE

一个字为2个字节,简称WORD。

两个字为双字,简称DWORD

0 1 10 11 100

1.4      八进制

八进制为以8为基数的数制系统,C语言当中0表示八进制,0666;

1.5      十六进制

十六进制值16为基数的数制系统,C语言中用0x表示十六进制

十进制

十六进制

二进制

0

0

0000

1

1

0001

2

2

0010

3

3

0011

4

4

0100

10

a

1010

11

b

1011

12

c

1100

13

d

1101

14

e

1110

15

f

1111

16

10

1.6      原码

将最高位做为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值

+7的原码是00000111

-7的原码是10000111

+0的原码是00000000

-0的原码是10000000

1.7      反码

一个数如果值为正,那么反码和原码相同

一个数如果为负,那么符号位为1,其他各位与原码相反

+7的反码00000111

-7的反码11111000

-0的反码11111111

1.8      补码

原码和反码都不利于计算机的运算,如:原码表示的7和-7相加,还需要判断符号位。

正数:原码,反码补码都相同

负数:最高位为1,其余各位原码取反,最后对整个数 + 1

-7的补码:=

10000111(原码)

111111000(反码)

11111001(补码)

+0的补码为00000000

-0的补码也是00000000

补码符号位不动,其他位求反,最后整个数+ 1,得到原码

用补码进行运算,减法可以通过加法实现

7-6=1

7的补码和-6的补码相加:00000111 + 11111010 = 100000001

进位舍弃后,剩下的00000001就是1的补码

-7+6 = -1

-7的补码和6的补码相加:11111001 + 00000110 = 11111111

11111111是-1的补码

1.9      10进制转化16进制技巧

用16为除数,求商数和余数,直到商数为0的时候,将余数倒过来就是转化后的16进制数

1.10 sizeof关键字

sizeof与size_t类型

 

1.11 int类型

1.11.1      int常量,变量

int是最常用的数据类型,在32位和64位系统下都是4个字节

1.11.2      printf输出int值

printf(“%d”, 可以是常量或者变量)

1.11.3      printf输出八进制和十六进制

按照8进制输出printf("%o\n", MYINT);

个字节的int

long在32位系统下是4个字节的int,在64位系统下是8个字节的整数

long long 不论是在32位还是在64位系统下都是8个字节的int

unsigned short

unsigned int

unsigned long

9l,9L,9ll,9LL,9u,9ull,9ULL

1.11.5      整数溢出

unsigned int i = 0xffffffff;

i = i + 1;

printf("%u\n", i);

1.11.6      大端对齐与小端对齐

Arm,X86构架的CPU都是采用小端对齐:高位放入高地址,低位放入底地址

UNIX大型服务器CPU都是大端对齐的,高位放入底地址,低位放入高地址

1.12 char类型

1.12.1      char常量,变量

‘a’;表示一个字符

Char在c语言当中大小是1个字节

Char就是一个字节整数

1.12.2      printf输出char

printf(“%c”, 字符类型);

1.12.3      不可打印char转义符

\a,警报

\b退格

\n换行

\r回车

\t制表符

\\斜杠

\’单引号

\”双引号

\?问号

1.12.4      char和unsigned char

char取值范围为-128到127

unsigned char为0-255

1.13 浮点float,double,longdouble类型

1.13.1      浮点常量,变量

5f;float

5d;double

Int a = 3;

Int b = 2;

Double c = 3 /2 ;;//相当于两个整数相除的结果是整数,将整数赋给c,那么小数点精度会丢失,所以这个时候c=1.00000

1.13.2      printf输出浮点数

%f,%Lf

1.14 类型限定

1.14.1      const

const 不可改变的量

1.14.2      volatile

不要让编译器自作聪明的去优化代码

1.14.3      register

register int I =10;

register意思是告诉编译器,这个变量要在寄存器里面运算,而不是通过内存运算,这样会大大的提升效率。

Register只是一个建议,而不是命令。如果程序执行的时候,CPU有空闲的寄存器,那么register就是有效的,如果没有空闲寄存器,那么register就是无效的

2         字符串格式化输出和输入

2.1      字符串在计算机内部的存储方式

字符串是内存中一段连续的char空间,以’\0’结尾

2.2      printf函数,putchar函数

printf格式字符

进制

将输出的前面补上0直到占满指定列宽为止不可以搭配使用-

N(         运算符表达式和语句

3.1      基本运算符

3.1.1         =

数据对象:泛指数据在内存的存储区域

左值:表示可以被更改的数据对象

右值:能赋给左值的量

3.1.2         +

3.1.3         –

3.1.4         *

3.1.5         /

3.1.6         %

取余数,两个数相除的余数。

3.1.7         +=

加等于

3.1.8         -=

减等于

3.1.9         *=

乘等于

3.1.10      /=

除等于

3.1.11      %=

取余等于

3.1.12      ++

自加1

i++;先计算i的值,然后再++

++i;先++,然后在计算I值

3.1.13      --

自减一

3.1.14      逗号运算符

int a = 2;

int b = 3;

int c = 4;

int d = 5;

int i = (a = b, c + d);

 

逗号表达式先求逗号左边的值,然后求右边的值,整个语句的值是逗号右边的值。

3.1.15      运算符优先级

优先级

运算符

结合性

1

++(后缀),--(后缀),()(调用函数),{}(语句块),.,->

从左到右

2

++(前缀),--(前缀),+(前缀),-(前缀),!(前缀),~(前缀),sizeof,*(取指针值),&(取地址),(type)(类型转化)

从右到左

3

*, /, %

从左到右

4

+,-

从左到右

5

<< >>

从左到右

6

< > <= >=

从左到右

7

== !=

从左到右

8

&

从左到右

9

^

从左到右

10

|

从左到右

11

&&

从左到右

12

||

从左到右

13

?

从右到左

14

=,*=,%=,+=,-=,<<=,>>=,&=,|=,^=

从右到左

15

,(逗号运算符)

从左到右

3.2      复合语句

{}代码块

3.3      类型转化

double f = (double)3 / 2;

 

C语言基础课程 第四课 它山之石可以攻玉---C语言数据类型和表达式的更多相关文章

  1. C语言基础课程 第三课 ADB(Android Debug Bridge)的使用

     由于前面已经发布过Linux的博客了 基础班将Linux基础命令就不单独发表博客了,本节课主要就是利用adb连接手机进行一个Linux基本命令的复习.而且熟悉手机的底层运作,不用界面操作照样也能 ...

  2. C语言基础课程 第二课 HelloWorld不为菜鸟所知的秘密

    1    愉快的开端hello world    4 1.1    include头文件包含    4 1.2    main函数    4 1.3    注释    4 1.4    {}括号,程序 ...

  3. 【C语言探险】 第四课的第二部分:串

    内容简单介绍 1.课程大纲 2.第二部分第四课: 字符串 3.第二部分第五课预告: 预处理 课程大纲 我们的课程分为四大部分,每个部分结束后都会有练习题,并会发布答案.还会带大家用C语言编写三个游戏. ...

  4. Linux零基础入门第四课

    根据直播讲义整理的内容,从第四课开始.前三课的内容若后面有精力会一并整理进来. 文件的基本操作(上) 创建.删除.复制.移动和重命名 touch命令创建文件 语法 >$ touch file0 ...

  5. Python语言基础-语法特点、保留字与标识符、变量、基本数据类型、运算符、基本输入输出、Python2.X与Python3.X区别

    Python语言基础 1.Python语法特点 注释: 单行注释:# #注释单行注释分为两种情况,例:第一种#用于计算bim数值bim=weight/(height*height)第二种:bim=we ...

  6. C语言基础课程 第一课 Linux环境配置小实战httpserver

     网段我需要改成如下 10.重启网络服务 并且查看ip 11. 打开windows的浏览器数人Linux的IP地址出现REDHAT的欢迎界面 11.进入目录 12.编写一个简单的html脚本 13 ...

  7. 潭州课堂25班:Ph201805201 爬虫基础 第十四课 js破解 (课堂笔记)

    打断点 找要的数据 鼠标的点击事件 新浪微博登录 表单提交分析 : 先佃输入错误密码开始调式 f10 往下走, f11 进入函数 sh + f11 跳出函数 # -*- coding: utf-8 - ...

  8. 01-JAVA语言基础——课程作业1—编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。

    1.题目:编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 2.程序设计思想: 通过运行配置输入数字后,其保存类型为String类型,因此需要采用Integer.valueOf(arg)将 ...

  9. 01 语言基础+高级:1-7 异常与多线程_day07 【线程池、Lambda表达式】

    day07[线程池.Lambda表达式] 主要内容 等待与唤醒案例 线程池 Lambda表达式 教学目标 -[ ] 能够理解线程通信概念-[ ] 能够理解等待唤醒机制-[ ] 能够描述Java中线程池 ...

随机推荐

  1. centos could not retrieve mirrorlist

    centos could not retrieve mirrorlist >>>>>>>>>>>>>>>> ...

  2. (转)Spring MVC

    资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 作者:赵磊 博客:http://elf8848.iteye.com 目录 一.前 ...

  3. document library\ picture library\Asset Library的默认文件夹

    document library\ picture library\Asset Library的默认文件夹? document library 默认文件夹:Forms picture library默 ...

  4. WindowsServer2003SP2EnterpriseEdition在Virtual上的安装

    下载镜像(迅雷): http://192.168.0.101/WindowsServer2003SP2EnterpriseEdition.iso?fid=fWljwnwNgumTtRIy- *BY*a ...

  5. Android - 向服务器发送数据(GET).

    在此,使用HTTP协议,通过GET请求,向服务器发送请求,这种方式适合于数据量小,数据安全性要求不高的情况下. 一,服务器端,使用Servlet. 在服务器端,定义一个HttpServlet的子类,以 ...

  6. 如何改app图标名称

    InfoPlist.strings文件里写上:       CFBundleDisplayName="中文名字";

  7. CorAnimation7-高效绘图、图像IO以及图层性能

    高效绘图 软件绘图 术语绘图通常在Core Animation的上下文中指代软件绘图(意即:不由GPU协助的绘图).在iOS中,软件绘图通常是由Core Graphics框架完成来完成.但是,在一些必 ...

  8. chrome输入框记住密码导致背景黄色的解决方案

    在form头部增加以下内容 <input type="text" style="display:hidden;"> <input type=& ...

  9. 转 C#开发微信门户及应用(1)--开始使用微信接口

    微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为日常计划的重要事情之一了.本系列文章希望从一个循序渐进的角度上,全面介 ...

  10. HTML5-javascript屏幕旋转事件:onorientationchange

    屏幕旋转事件:onorientationchange 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋) 判断屏幕是否旋转 function orientationChange() { ...