学文网

有关c语言入门的基础知识有哪些

时间:2023-08-27 18:47:19 文/王明刚老师 知识学文网www.xuewenya.com

c语言入门基础知识

赋值运算符与赋值表达式

一、赋值运算符与赋值表达式?

赋值符号 “=“就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。一般形式为:?

变量名 = 表达式?

在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。?

例:a=12; 此表达式读作“将10的值赋值给变量a”。?

说明:?a、如果赋值号两边的运算对象类型不一致,系统会自动进行类型转换,转换的规则:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型,?

例:int y=3.5; 在变量y中最终存储的是整数3。?

b、 可以将复制表达式的值再赋值给变量,形成连续赋值。?

例如:x=y=25 是一个连续赋值表达式,x=y=25 等价于x=(y=25),所以表达式x=y=25 最终的值为25 。?

二、复合的赋值运算符?

在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符是:+=,-=,_=,/=,%= 。?

两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是取变量n中的值增1再赋给变量n,其他复合的赋值运算符的运算规则依次类推。?

如求表达a+=a-=a_a 的值,其中a的初值为12 。?

步骤:?

(1)先进行“a-=a_a“运算,相当于a=a-a_a=12-144=-132 。?

(2)再进行“a+=-132“运算,相当于 a=a+(-132)=-132-132=-264 。?

关系运算符和关系表达式

一、C语言中的逻辑值?

C语言中的逻辑值只有两个:真(true)和假(flase)。用非零代表真,用零代表假。因此,对于任意一个表达式,如果它的值为零,就代表一个假值,如果它的值为非零,就代表一个真值。只要值不是零,不管是正数,负数,整数,实数,都代表一个真值。例如-5的逻辑值为真。?

二、逻辑表达式?

“&&”和“||”的运算对象有两个,故它们都是双目运算符,而!的运算对象只有一个,因此它是单目运算符。逻辑运算举例如下:?

(1)a&&b: 当&&两边都为“真”时,表达式a&&b的值才是真。?

值得注意的是:在数学中,关系式0?

(2)a||b: 当||两边有一个为“真”时,表达式a||b的值就是真。?

(3)!a: 表示取反,如果a为真,则!A为假,反之亦然。例如!-5的值就为0.?

在C语言中,由&&或||组成的逻辑表达式,在某些特定情况下会产生“短路“现象。?

(1)x && y && z ,只有当x为真(非0)时,才需要判别y的值;只有x和y都为真时,才需要去判别z的值;只要x为假就不必判别y和z,整个表达式的值为0。口诀:“一假必假”。?

例:(!5==1)&&(++i==0) (!5==1)表达式的值为0,所以计算机运行中就跳过(++i==0)此表达式,(!5==1)&&(++i==0)表达式的值为0.?

(2)x||y||z ,只要x的值为真(非零),就不必判别y和z的值 ,整个表达式的值为1,只有x的值为假,才需要判别y的值,只有x和y的值同时为假才需要判别z的值,口诀:“一真必真”。?

位运算

一、位运算符?

在计算机中,数据都是以二进制数形式存放的,位运算就是指对存储单元中二进制位的运算。C语言提供6种位运算符。?

二、位运算?

位运算符 & |~<< >> ∧ 按优先级从高到低排列的顺序是:?

位运算符中求反运算“~“优先级最高,而左移和右移相同,居于第二,接下来的顺序是按位与 “&“、按位异或 “∧“和按位或 “|“。顺序为~ << >> & ∧ | 。?

例1:左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。?

例如:?

a<<4?

指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。?

例2:右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。?

例如:?

设 a=15,?

a>>2?

表示把000001111右移为00000011(十进制3)。?

应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。?

例3:设二进制数a是00101101 ,若通过异或运算a∧b 使a的高4位取反,低4位不变,则二进制数b是。?

解析:异或运算常用来使特定位翻转,只要使需翻转的位与1进行异或操作就可以了,因为原数中值为1的位与1进行异或运算得0 ,原数中值为0的位与1进行异或运算结果得1。而与0进行异或的位将保持原值。异或运算还可用来交换两个值,不用临时变量。?

如 int a=3 , b=4;,想将a与b的值互换,可用如下语句实现:?

a=a∧b;?

b=b∧a;??

a=a∧b;?

所以本题的答案为: 11110000 。?

C语言基础知识整理

1、任何一个c语言程序都必须包括以下格式:?

main()?

{ }?

这是c语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。?

2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。?

3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。?

4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。?

5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果:?

a=20,b=15,sum=35?

6、#include?

注意:(1)以#号开头 (2)不以分号结尾?

这一行没有分号,所以不是语句,在c语言中称之为命令行,或者叫做“预编译处理命令”。?

7、程序中以 /_开头并且以_/结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。??

常量

在程序运行中,其值不能被改变的量称为常量。常量有5种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。?

(一)数值转换?

数字的四种表现形式:?

①:二进制:所有数字由0,1构成,逢二进一,二进制数中不会出现2.。?

例:110101?

②:八进制:以数字0(注意不是以字母O,o)开头,所有数字由0~7构成,逢八进一,八进制数中不会出现8。?

例:0112,0123,077等?

③:十进制:所有数字由0~9构成,逢十进一,十进制数中不会出现10。?

例:0,12,-15等?

④:十六进制:以0x或者0X(数字0加字母x)开头,所有数字由0~9,A~F(或者a~f)构成,逢十六进一(其中A、B、C、D、E、F分别代表10、11、12、13、14、15)?

例:0x4A、0X14c7等?

在计算机内部,数字均以二进制形式表示和存放,用户输入的普通十进制数字都要被计算机转换成二进制才能在计算机内部存储,同样计算机的运算结果也为二进制,一般要将其转换成十进制数再输出给用户阅读,这种转换通常由计算机自动实现。?

(1)将十进制转换二进制、八进制和十六进制?

除法:将十进制数除以2,记录余数,得到的商继续除以2,直到商为0,然后将各次相处所得的余数从后往前逆序排列,所得余数数字序列就是该十进制数对应的二进制数。八进制和十六进制转换方法同上。?

例:十进制数13转换成二进制数的值为1101,转换八进制为015,转换成十六进制为D.?

(2)将二进制、八进制和十六进制转换成十进制?

乘积求和:将二进制的每一位从低位到高位(右边为低位,左边为高位)分别乘以20,21,22。。。。,然后将这些积求和。?

例如:(1101)2=(13)10 (317)8=(207)10 (23E)16=(574)10?

(3)二进制与八进制、十六进制数之间的相互转换?

①:二进制转八进制:从右往左每三位一组转换成十进制数,将所得数据组合就是对应的八进制数(注意:高位不足三位补零)。?

例:(010 110 111)2=(267)8?

②:二进制转十六进制:从右往左每四位一组转换成十进制数,将所得数据组合就是对应的十六进制数(注意:高位不足四位补零)。?

例:(0101 1011)2=(5B)16?

③:八进制转化二进制:每一位数字转换为三位二进制数字?

例:(13)8=(001 011)2=(1011)2?

(注意:去掉前面的两个00,因为0在高位没有意义)?

④:十六进制转化二进制:每一位数字转换为四位二进制数字?

例:(E3)16=(1110 0011)2?

(二)整型常量?

整型常量有3种形式:十进制整型常量、八进制整型常量和十六进制整型常量。?

(注意:c语言中没有直接表示二进制的整型常量,在c语言源程序中不会出现二进制。)?

书写方式如下:?

十进制整型常量:123 , 0 ,-24 , 85L(长整型常量) 等?

八进制整型常量:051 ,-026 ,0773 等?

十六进制整型常量:0x55 , 0x1101 , 0x , 0x5AC0 , -0xFF。?

其中L为长整型。?

(三)实型常量?

实型常量有两种表示形式:小数形式和指数形式。?

小数形式:5.4 0.074 -23.0?

指数形式:5.4e0 4.3e-3 -3.3e4?

(1)小数部分为0的实型常量,可以写为453.0 或453。?

(2)用小数表示时,小数点的两边必须有数,不能写成“ .453“和“453.“,而应该写成“0.453“和“453.0“。?

(3)用指数写法时,e前必须有数字,e后面的指数必须为整数(注意:整数阶码可以是正数,负数,也可以是八进制数、十六进制数,但必须为整数)。?

(四)字符常量?

字符常量的标志是一对单引号‘ ’,c语言中的字符常量有两类:?

(1)由一对单引号括起来的一个字符,如‘a ’, ‘r’ ,‘#’。注意: ′a′ 和 ′A′ 是两个不同的字符常量。?

(2)由一对单引号括起来,以反斜杠\开头,后跟若干数字或者字母,比如‘\n’,其中“\“是转义的意思,后面跟不同的字符表示不同的意思,这类字符常量叫转义字符。具体如图所示 。?

转义字符? 转义字符的意义 ASCII码?

\n? 回车换行? 10?

\t? 横向跳到下一制表位置? 9?

\b? 退格? 8?

\r? 回车? 13?

\f? 走纸换页? 12?

\\? 反斜线符"\"? 92?

\'? 单引号符? 39?

\”? 双引号符? 34?

\a? 鸣铃? 7?

\ddd? 1~3位八进制数所代表的字符?

\xhh? 1~2位十六进制数所代表的字符?

(五)字符串常量?

C语言中,以双引号括起来的,由若干个字符组成的序列即为字符串常量。?

例:“ni hao” “happy”等等。?

(六)符号常量?

符号常量是由宏定义“#define“定义的常量,在C程序中可用标识符代表一个常量。?

例:计算圆的面积的c程序。?

#include?

#define PI 3.14159?

main()?

{?

float r,s;?

r=12.5;?

S=PI _r_r;?

printf(“s= %f ”,s);?

}?

说明:?#define 是宏定义,此程序中所有出现PI的地方都代表3.14159,同时PI称为符号常量。习惯上我们用大写字母来表示符号常量,小写字母表示变量,这样比较容易区别。?

类型的自动转换和强制转换

当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:?

char < int < float < double?

即左边级别“低“的类型向右边转换。具体地说,若在表达式中优先级最高的数据是double型,则此表达式中的其他数据均被转换成double型,且计算结果也是double型;若在表达式中优先级最高的数据是float型,则此表达式中的其他数据均被转换成float型,且计算结果也是float型。?

在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。?

除自动转换外,还有强制转换,表示形式是:?

( 类型 )(表达式);?

例:(int)(a+b)?

讨论:当a值赋值为3.4,b值赋值为2.7,(int)(a+b)和(int)a+b的值分别为多少??

c语言基础知识

C程序的生成过程

C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。???

源程序的扩展名为 .c ,目标程序的扩展名为 .obj , 可执行程序的扩展名为 .exe 。??

标识符

在编写程序时,必须为函数、变量等命名,这个名字称为标识符。C语言中标识符的命名规则如下:?

标识符只能由字母、数字、下划线组成;?

标识符的第一个字母必须是字母和下划线;

标识符区分大小写字母,如If和if是两个完全不同的标识符。

合法标识符如下:?

A6, b_3 , _mn?

非法的标识符如下:?

ab#12 , 8m , tr3:4 , yes no?

标识符不能与程序中具有特殊意义的关键字相同,不能与用户编制的函数名、C语言库函数相同,在程序中各种标识符尽量不要重复,以便区分。选择变量名和其他标识符时,应注意做到 “见名知义”。?

标识符分为如下三类:?

1、关键字?

关键字是具有特定含义的,专门用来说明c语言特定成分的一类标识符,不能用作用户的标识符。?

auto?

break?

case?

char?

union?

do?

double?

else?

enum?

extern?

goto?

if?

int?

long?

short?

signed?

static?

sizof?

struct?

switch?

unsigned?

void?

for?

while?

typedef?

continue?

float?

return?

typedef?

default?

2、预定义标识符?

预定义标识符在c语言中也有特定的含义,但可以用作用户标识符,预定义标识符分为两类:?

(1)、库函数名字,比如(printf,scanf,sin,isdigit等)?

(2)、编译处理命令名,比如(define,include)?

3、用户标识符?

用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则。?

推荐文章

河南高考排名195560左右排位理科可以上哪些大学,具体能上什么大学2024-06-08 12:22:13

吉林外国语大学和湘潭大学兴湘学院哪个好 附对比和区别排名2024-06-08 12:17:15

江西工商职业技术学院在黑龙江高考历年录戎数线(2024届参考)2024-06-08 12:13:44

甘肃高考排名5480左右排位理科可以上哪些大学,具体能上什么大学2024-06-08 12:10:50

四川文化艺术学院和天津城建大学哪个好 附对比和区别排名2024-06-08 12:07:58

江西高考排名71510左右排位理科可以上哪些大学,具体能上什么大学2024-06-08 12:05:17

公司年会精彩主持词五篇2023-08-17 00:21:16

学生实训心得体会报告2023-08-27 16:06:20

热闹的元宵节优秀作文五篇2023-08-13 00:30:08

公司元旦晚会主持稿串词五篇2023-08-15 01:14:47

关于婚礼敬茶礼仪知识有哪些2023-08-23 07:41:16

湖南结婚礼仪流程模板2023-08-24 08:03:25

结婚梳头礼仪知识有哪些2023-08-17 18:02:49

怎样养狗知识大全2023-08-22 09:32:14

中华鲟鱼知识最新大全2023-08-27 23:32:37

貂皮知识大全最新2023-08-21 09:20:44

最新文章

精华文章

热门排序