C语言复习3/6日

1.变量:变量代表一个有名字的、具有特定属性的一个存储单元。它用来存放数据,也就是存放变量的值。在程序运行期间,变量的值是可以改变的。变量必须先定义后使用。变量名和变量值是两个不同的概念。变量名实际上是以一个名字代表的一个存储地址。在对程序编译连接时由编译系统给每一个变量名分配对应的存储地址。从变量中取值,实际上是通过变量名找到对应的内存地址,从该存储单元中读取数据。

2.符号常量:用#define指令,指定用一个符号名称代表一个常量。如#define  PI  3.14

注意:符号常量不是变量,符号常量不占用内存,只是一个临时变量,在预编译后这个符号就不存在了,故不能对符号常量赋以新的值。

3.转义字符\o、\oo、\ooo(o代表一个八进制数字)输出结果为与该八进制码对应的字符

printf("\101");//输出结果为A;101八进制换算成十进制为65,对应的ASCII字符为A

转义字符\xh[h...]其中h代表一个十六进制数字,输出结果为与该十六进制码对应的字符

printf("\x1B");//输出结果为ESC控制符,1B换算为十进制为27,27对应的ASCII字符为ESC

4.常变量

const int a = 3;

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

常变量与常量的异同是:常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。可以说常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。

5.C99标准新增的数据类型:双长整型long long int、布尔型bool、指针类型*

说明:C标准并没有具体规定各种类型数据所占用存储单元的长度,这是由各个编译系统自行决定的。C标准只要求long类型的长度不短于int型,short类型不长于int型。

即:sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)

整型变量的变量值在存储单元中都是以补码形式存储的,存储单元中的第一个二进制位代表符号。

关于补码:正整数的补码就是原码,负整数的补码为以绝对值求反码,反码加1就是补码

整型变量前可以加unsigned修饰符,来指定这个整型变量是无符号整型,输出时指定输出格式无符号十进制数格式输出%u,在将一个变量定义为无符号整型后,不应向它赋予一个负值,否则会得到错误的结果。如:unsigned short price = -1;printf("%d\n",price);//输出结果为65535

原因:-1转换为补码:11111111 11111111,其左面第一位不代表符号,按%d格式输出,就是65535即2的16次方-1

6.字符型数据存储方式是存储其ASCII码,所以C99也把字符型数据作为整数类型的一种。

C99除了允许使用char类型(单字节)外,还允许使用whcar_t类型(宽字符),其类型定义在头文件stddef.h中。

7.字符‘1‘和整数1是不同的概念,字符‘1‘只是代表一个形状为‘1‘的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节,字符‘1‘的ASCII码为49,存储为00110001,整数1是以二进制补码方式存储的,占两个或4个字节0000 0000 0000 0001

8.字符类型也属于整型,也可以使用signed和unsigned修饰符。如果在定义变量时既不加signed又不加unsigned,C标准并未规定是按signed char处理还是按unsigned char处理,由各编译系统自己决定。这是和其他整型变量处理方法不同的,如int默认等同于signed int。

如果将一个负整数赋给有符号字符型变量是合法的,但它不代表一个字符,而是作为一字节整型变量存储负整数。

如:

signed char c = -6;
printf("%d", c);//输出结果为-6

8.在C语言中,实数是以指数形式存放在存储单元中的。

编译系统为每一个float型变量分配4个字节,数值以规范化的二进制数指数形式存放在存储单元中。在存储时,系统将实型数据分成小数部分和指数部分两个部分,分别存放。小数部分的小数点前面的数为0。在4个字节中,究竟用多少位来表示小数部分,多少位来表示指数部分,C标准并无具体规定,由各C语言编译系统自行决定。

时间: 2024-10-17 09:34:13

C语言复习3/6日的相关文章

C语言复习(一)关键字

最近在学COCOS2Dx,刚刚开始写一个塔防游戏,因为第一次用VS2012,感觉还不太习惯. C语言的大部分内容也忘记了,因此做一个简要的复习. 1.关键字: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigne

cpp学习(二)C语言复习

接下来复习一下C语言部分,毕竟C++与C语言本自同根生,并且在汇编层面C与C++可以说完全相同.假如你没有C语言基础的话,可以先暂停去学习一下C语言,C语言可以看"C语言之父"谭浩强的<C语言程序设计>或者观看学堂在线的免费公开课,在此推荐清华大学的c++课程:http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/a0f3bf5a4c044dfaaad68148

c语言复习 —— 数组

数组的产生:数据是一种存放数据的容器.所以:一个数组中里面的元素是同一种类型的. 一维数组: 1.定义: 类型 名称 [元素数量] 注意:元素数量必须是整数,c语言中没有对象这个概念,所以存放的都是基本的数据类型,而在oc中的数组中存放的是必须是对象. 在c99之前,元素数量必须子编译的时候定义下来,而c99之后,确实可以没有没有定义下来. eg: int[10];//表示定了10个元素的数组,为整数类型. 2.特点: 1)所有的元素都是具有相同的类型. 2)一旦创建,就不能够更改. 3)数组中

C语言复习3/9

1.C语言中定义数组的形式为:类型符  数组名[常量表达式],常量表达式中可以包括常量和符号常量,如"int a[3+5];"是合法的.不能包含变量,如"int a[n];"是不合法的.也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值.如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式.如: void func(int n) { int a[2 * n]; //合法,n的值从实参传来 . . . }

C语言复习

函数里面不能嵌套函数  这两个的区别是什么呢 #define a int[10] 属于宏定义,在编译的时候只进行替换,而不进行类型检查:typedef int a[10]: 只不过给int型取个别名,在编译的时候会进行类型检查. typedef 类型 别名;                  类型别名    用这个 #define 名字 替换成的字符          宏定义   只是把一个你写的东西替换成另一种东西,比如#define Hello "hello",把Hello替换成&

C语言复习——指针 链表 与 文件操作

刚刚进入大二,准备开始学习C++,对大一所学的C语言一次练习,正好也是赶上老师布置的任务,用C语言写一个  销售管理系统  ,就尽可能的把所学的都用上,也就是结构,指针,文件操作,还有数据结构,本次加入了链表. 用两个函数 Load_LinkList() 和 Save_LinkList() 让链表与文件操作结合,除了打印函数,其他都是在内存中操作链表,这样写更有条理,在创建链表时没有采用书上的用一个中间变量引导,并插入到结点前面,而是直接在链表尾的next申请内存,便于理解,操作也方便. /*首

C语言复习&mdash;&mdash;用到的小知识

1. 在C语言中,怎么查看一个数据类型占用了多少个字节大小呢? 可以使用sizeof(int)/sizeof(double)等来查看某数据类型到底用了几个字节: 注意:sizeof 它并不是一个函数,而是一个单目操作符, 2. C语言中常见的数据类型: 整型分为有符号整型(signed)和无符号整型(unsigned ), 它们各自又可以分为 长整型(long), 短整型(short), 整型(int)和字符型(char), 所以结合起来一共有8种基本的整型结构: long/short/int/

C语言 &#183; 复习杂记

/*=================================*/ /* 基础部分 */ /*=================================*/一:.CPP--C++文件:.C--C文件 二:C语言中浮点型一般分为float单精度型.double双精度型.long double长精度型,单精度浮点型小数点后面有效数字为6~7位和双精度浮点型小数点后面有效数字为15~16位 三:char s[N]--for(int i=0;s[i];i++):可以用s[i]进行循环.

C语言复习3/24

1.一维数组与指针 int a[10]; int *p = a; a[i] <=>*(a+i)<=>*(p+i) a作为一维数组的数组名,它的值是固定的.当数组名用作函数参数时,形参数组名是作为指针变量来处理的.如果用指针变量作实参,必须先使指针变量有确定值,指向一个已定义的对象. 2.二维数组与指针 定义一个二维数组int a[3][4]; 从二维数组角度看,a代表二维数组首元素的地址,现在的首元素不再是一个简单的整型元素,而是由4个整型元素所组成的一维数组,因此,a代表的是首行