【C语言基础02】数据类型、变量与常量、运算符与表达式等

关于C语言的基础知识:

   

一、C语言的所有数据类型

二、常量与变量

三、标识符和关键字

四、整型数在计算机中的存储方式

五、有符号的数据类型和无符号的数据类型

六、运算符和表达式


   

一、C语言的所有数据类型

    二、常量与变量

    常量:

    常量:在程序运行过程中,其值不能改变的量成为常量。

    类型:整型常量(int)、实型常量(float和double)、字符常量(char)、字符串常量;其中整型常量分为短整型(short int)、长整型(long int)、无符号型(unsigned int)等。

    1. 整型常量

    都以二进制形式存储

    ① 十进制整型常量

    ② 八进制整型常量,以数字0开头。用合法的八进制数字表示,各位数字分别是0到7

    ③ 十六进制整型常量,以数字0和字母x(或大写字符X)开头,各位数字分别是0到15,其中10(A-a)、11(B-b)、12(C-c)、13(D-d)、14(E-e)、15(F-f);如0x10,0Xff,0X8

    2. 实型常量

    实型常量:即数值常量,有正负之分,只能用十进制形式表示。可以用小数形式或指数形式表示。实型常量不分单、双精度,但可赋给一个float型或double型变量。其中,指数形式的浮点常量E或e前面必须有数字,E或e后面必须为整数。

    3. 字符常量

    字符常量:用一对单撇号括起来的一个字符,如'a'。单撇号只是字符与其他部分的分隔符或是定界符,并不是常量的一部分

    4. 转义字符

    有些字符和命令无法通过键盘直接输入,因而借用一个符号或数字来表示。\ 是起始符。

    类型:① 字符转义系列 ② 数字转义系列

    3种表示方法:

    ① 反斜杠开头后面跟一个字母代表一个控制字符;\n \t \r \b

    ② \\ 代表 \,用\’代表引号字符

    ③ 输出不能直接从键盘上输入或不能用字符常量书写的ASCII字符;\ddd:1-3位八进制所代表的字符;\xhh:1-2位十六进制所代表的字符

    5. 字符串常量

    简称为字符串。双撇号为定界符,不属于字符串。

    字符串中的字符数称为该字符串的长度,在存储时,系统自动在字符串的末尾加一个字符串结束表示,是转义字符\0,即多占一个字节,其标记作用。

    6. 符号常量

    标识符代替常量。

    #define PRICE 30,凡此后在本文件出现的PRICE都代表30,可和常量一起进行运算。

    在作用域类不能改变,也不能再被赋值。

    好处:含义清楚;一改全改。

    7. 布尔类型

    Bool是无符号的整型变量。<stdbool.h>提供了true(1)和flase(0)。

    变量:

    程序运行中可以发生变化的量。占据一定的存储单元,存放变量的值,保存程序运行中的输入数据,获得中间结果和最终结果。

    ① 变量的声明:一个定义语句可以同时定义多个变量。可在函数体之外,也可在函数体或符合语句内。

    ② 变量的初始化:可在声明变量的同时对其初始化;也可对声明的变量的一部分初始化。不同类型的数据在内存占据不同的存储区;一种数据类型对应着一个值的范围;一种数据类型对应着一组允许的操作,如对整型数据可进行求余。

    先声明语句指定变量的类型,在编译时指定的类型分配其一定的存储空间,并决定数据的存储方式和允许操作的方式。

    变量定义后设计4个相关的内容:变量名、变量的存储空间及内容、变量的地址、变量的作用域。

    三、标识符和关键字

    语法单位分为六类:标识符、关键字、常量、字符串、运算符、分隔符。

    1. 标识符

    是给程序中的实体(变量、常量、函数、数组、结构体)以及文件所起的名字。即是一个名字,由设计者或系统指定。

规则如下:

    ① 以字母(A-Z,a-z)和下划线“_”开头,由字母、数字字符(0-9)和下划线组成的字符系列。

    ② 系统使用了下划线开头的标识符。

    ③ 长度无规定

    ④ 区分大小写

    原则如下:

    ① 见名知其意

    ② 变量名和函数名小写,符号常量大写

    ③ 避免混淆的字符

    2. 关键字

    由编译程序预定义、有固定含义的、在组成结构上由小写字母构成的标识符。又称保留字,保留专门用途的特殊标识符。

    四、整型数在计算机中的存储方式

    1. 内存储器的最小存储单位成为“位”(bit);8个二进制位组成一个“字节”(byte);给4个字节分配一个地址,若干字节组成一个“字”(word)。用一个字来存放一条机器指令或一个数据。

    2. 最右边的一位称为最低位,最左边的一位称为最高位。最高位(最左边一位)用以存放整数的符号。0位正整数,1为负整数。

    3. 原码

    把整数的绝对值用二进制表示,最高位用于表示符号,0是正数,1是负数。二进制位越多,表示数的范围越大。符号不同的两个数不能直接相加,也不能直接相减。

    4. 反码

    正数的反码和原码相同。

    负数的反码是对该数的原码除了符号位外各位取反。

    5. 补码

    正数的补码和原码相同;

    负数的补码是在该数的反码的最后(最右边)一位加1。

    引入补码后,计算机的加减运算都可用加法来实现。

    6. 正整数的原码、反码、补码相同。

    求负整数的补码步骤:

    ① 求负整数的原码 ② 在原码的基础上求反码 ③ 在反码的基础上加1

    五、有符号的数据类型和无符号的数据类型

    1. 在内存存储整数时,一般用最高位(最左边一位)表示符号。数值以补码的形式存放。

    2. 无符号(unsigned)的整型数据,将二进制形式的最左位不作为符号,而与右边各位一起用来表示数值,若定义了unsigned int 只能存放正数而不能存放负数。

    3. 字符型的数据也有singed和unsigned两种数据类型。字符型的数据占一个字节(8位),标准的ASCII字符允许范围0到127,用7位即可,最左边一位补0。

    4. 实型数据没有unsigned 和 singed之分,均带符号

    六、运算符和表达式

    运算即对数据的加工。C语言对数据的基本操作和处理都是运算符来完成的。称为运算符或操作符。被运算的对象——数据称为运算量或操作数。

    运算符可执行对操作数的各种操作,按操作数分为单目(一元)运算数、双目(二元)运算符、三目(三元)运算符。

    运算符的功能:算术运算符、关系运算符、逻辑运算符、自增与自减运算符、赋值运算符、条件运算符。

    表示数组下标[]、表示函数调用()、表示顺序求值,,以及类型强制转换符(类型)。

    具体归纳如下:

    表达式:对哪些数据,以什么顺序及其施加什么操作。

    表达式=运算符+运算符量(常量、变量、函数)

    表达式运算规则:由运算符的功能和运算符的优先级与结合性决定。将运算符分成若干组,按运算符执行先后顺序为每组规定一个等级-优先级;处于同一优先级的运算符顺序称为运算符的结合性,从左到右或从右到左。

    1. 赋值运算符和赋值表达式

    ① 当赋值符号两边数据类型不同时,系统自动进行类型转换,将赋值号右边表达式的类型转换为左边变量的类型,再赋值。

    赋值运算符的优先级仅仅高于逗号运算符,自右向左的结合性。

    算术运算符高于赋值运算符。

    有括号的坚持括号优先。

    2. 算术运算符和算术表达式

    算术运算符:+、-、*、/、%、++、--

    双目运算符+、-、*、/的操作数可以是任何整数或浮点数;其中+、-可用于指针加或减一个整数。

    双目运算符的两个操作数类型可以不同,运算前遵循类型的一般算术转换规则自动转换成相同的类型,运算结果的类型与转换后操作数的类型相同。

    转换原则:值域较窄的类型向值域较宽的类型转换。例,13.0+5=180.0-5(int)被转换为double;'d'-97=100 – 'd(char)'被转换为int;

    运算符 / :两操作数都是整数,则执行整除数;否则,执行实数除,结果为浮点数

    运算符 % :两操作数必须是整数,结果也是整数,值为左操作数除以右操作数所得的余数

    运算符 ++、--:即可用在前缀,也可用在后缀,结构是使变量增1或减1;

    ++a前缀:先增加、减少再取值;即先自增后运算

    a++后缀:先取值,再增加、减少;即先运算后自增

    运算的结合方向是自右向左;只能用于整型变量。

    3. 长度测试符号sizeof

    测试某个类型的变量所占用计算机内存空间的字节长度

    4. 关系运算符和关系表达式

    ① 关系运算符:即比较运算符,比较两个运算对象值的大小

    关系运算符为双目运算符,方向为从左向右;结果为1(真)或0(假);

    算术运算符高于关系运算符

    ② 关系表达式

    关系表达式=关系运算符+运算对象+小括号组成的表达式;表达式成立返回整型值1;否则返回0。

    运算方向是从左到右:x=10>5>3;

    5. 逻辑运算符与逻辑表达式

    ① 逻辑运算符-自左向右

    优先级次序:逻辑非>算术运算>关系运算>逻辑与>逻辑或>赋值运算

    ② 逻辑表达式

    用逻辑运算符将关系表达式连接起来构成逻辑表达式。

    对象可是C语言中任意合法的表达式。

    结果为1(真)、0(假)

    非0数都为真。

    特性:必需执行下一个表达式才能求解时,才求该表达式;并不是所有的表达式都被求解。

    &&:前一个表达式为假(0),都为假(0);

    ||:前一个表达式为真(1),都为真(1);

    6. 条件运算符与条件表达式

    条件运算符 ? 是C语言提供唯一一个三目运算符。

    执行顺序:先求解表达式1,若为1,再求解表达式2,则该表达式的值就为整个表达式的值;

    若表达式1的值为0,则求解表达式3,则该表达式的值就为整个表达式的值。

    格式:表达式1?表达式2:表达式3

    条件运算符的优先级别仅仅高于赋值运算符,低于关系运算符和算术运算符。

    结合方向:自右向左,例a>b?a:c>d?c:d;等价于 a>b?a:(c>d?:c:d);

    7. 逗号运算符与逗号表达式

    即顺序求值运算符。

    从左向右依次计算表达式1,扔掉表达式1的值,再计算表达式2。

    逗号表达式可以和另外一个表达式组成一个新的逗号表达式;

    在变量和函数表中逗号起间隔符作用;

    逗号表达式是将各个表达式串联起来

    8. 位运算

    对运算对象按照二进制位进行操作,对字节或字中的实际位进行检测、设置、位移

    运算对象只能是字符型或整型变量及它们的变体。

    ① 按位取反(~):对二进制按位取反,1变0,0变1

    ② 按位与(&):参加运算的两个数据,按照二进制位进行&运算,如两个相应的二进制都为1,则该位的结果为1,否则为0

    功能:清0;全部二进制位为0,条件:原数中为1的位,新数中为0;

    取一个数中的某些指定位;如取高字节、或低字节

    ③ 按位或|;一个为1即为1;某一个数据的某些特殊位置,低8位与高8位

    ④ 按位异或^。判断两个相应位的值是否不同,不同为1,否则为0。

    功能:特定位反转;与0相异或保留原值;不用中间变量就可交换两个数的值

    ⑤ 左移<< ,乘法,移位后,右端出现的空位补0,移出左端之外舍弃

    ⑥ 右移>>,除法,二进制位右移2位,右端低位舍弃,高位补0

发布了11 篇原创文章 · 获赞 13 · 访问量 1808

猜你喜欢

转载自blog.csdn.net/qq_42603841/article/details/104150149