初学者必读:C语言基础详解

 2024-02-21 00:01:22  阅读 0

01.理解C语言程序的结构

用一个简单的C程序例子来介绍C语言的基本结构、格式以及良好的写作风格,让朋友们对C语言有一个初步的了解。

示例 1:计算两个整数之和的 C 程序:

#include main() 
{
 int a,b,sum; 
a=20; /*定义变量a,b,sum为整型变量*/ 
b=15; /*把整数20赋值给整型变量a*/ 
sum=a+b; /*把整数15赋值给整型变量b*/ 
printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); /*把两个数之和赋值给整型变量sum*/ 
}

关键点

-1。 任何C语言程序都必须包含以下格式: main() { } - 这是C语言的基本结构,任何程序都必须包含这个结构。 括号内可以不写任何内容,那么程序将不会执行任何结果。

2. main()——C语言中称为“主函数”。 AC 程序有且只有一个主要功能。 任何 C 程序总是从 main 函数开始执行。 main函数后面的一对括号不能省略。

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

4. { } 中每句话后面有一个分号(;)。 在C语言中,我们把以分号结尾的句子称为C语言语句。 分号是语句的结尾。

5. (“a=%d,b=%d,sum=%d\n”,a,b,sum); ——通过执行C语言系统提供给我们直接使用的这个屏幕输出函数,用户就可以看到运行结果。 该程序运行后,显示器上将显示以下结果:a=20,b=15,sum=35。

6.#——注:以#开头。 不以分号结尾的行没有分号,因此它不是语句。 在C语言中称为命令行,或者“预编译处理命令”。

7、程序中以/*开头、*/结尾的部分代表程序的注释部分。 可以在程序中的任何位置添加注释。 添加它们是为了提高程序的可读性,但是计算机在执行main函数内容时完全忽略了它们。 换句话说,注释部分被计算机视为注释部分,不存在于主函数中。

02.C程序生成过程

AC程序首先由源文件编译生成目标文件,然后连接生成可执行文件。

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

03.标识符

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

标识符不能与程序中具有特殊含义的关键字相同,也不能与用户编写的函数名或C语言库函数相同。 程序中各种标识符尽量不要重复,以方便区分。 选择变量名称和其他标识符时,应注意通过名称来理解它们。

标识符分为以下三类 - 1. 关键字

关键字是一类具有特定含义的标识符,专门用于描述 C 语言的特定组件。 它们不能用作用户标识符。

2. 预定义标识符 预定义标识符在C语言中也有特定的含义,但它们可以用作用户标识符。 预定义标识符分为两类:

1)。 库函数名称,如scanf、sin等。

2)编译处理命令名,例如:

3、用户标识符 用户根据需要定义的标识符称为用户标识符。 无论您如何自定义标识符,都必须遵守标识符的三个命名规则。

04 常数

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

4.1 数值转换——数值表达的四种形式:

在计算机中,数字以二进制形式表示和存储。 用户输入的普通十进制数必须经过计算机转换为二进制后才能存储在计算机内部。 同样,计算机的计算结果也是二进制的,一般都要转换成十进制数然后输出给用户读取,而这种转换通常是由计算机自动进行的。

1)十进制转换为二进制、八进制、十六进制除法:将十进制数除以2,记录余数,继续将得到的商除以2,直到商为0,然后将每次得到的余数从后到前相加。 逆序排列,得到的余数序列就是十进制数对应的二进制数。 八进制和十六进制转换方法同上。 例:十进制数13转换为二进制数为1101,转换为八进制值为015,转换为十六进制值为D。

2)将二进制、八进制、十六进制转换为十进制乘积并求和:将每个二进制位从低到高(低位在右边,高位在左边)分别乘以20、21、22。 。 。 。 ,然后对这些值求和。

3)二进制、八进制、十六进制数之间的转换

4.2 数字常量——整型常量有三种形式:十进制整型常量、八进制整型常量和十六进制整型常量。 (注:C语言中没有直接表示二进制的整型常量,二进制不会出现在C语言源程序中。)

写法如下: 十进制整型常量:123、0、-24、85L(长整型常量)等 八进制整型常量:051、-026、0773 等 十六进制整型常量:0x55、 、 0x、 、 -0xFF。 其中L是一个长整数。

运算符号表示什么_运算符号表示_c 运算符号怎么表示

4.3 实数常数——实数常数有两种表示形式:小数形式和指数形式。

小数形式: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后面的指数必须是整数(注:整数指数可以是正数,负数,也可以是八进制数或十六进制数,但它必须是整数)。

4.4 字符常量——字符常量的符号是一对单引号' '。 C语言中的字符常量有两种类型:

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

2)用一对单引号括起来,以反斜杠\开头,后跟一些数字或字母,如'\n',其中“\”表示转义,后面跟不同的字符表示不同的含义。 这种类似字符的常量称为转义字符。

4.5 字符串常量——在C语言中,用双引号括起来的几个字符的序列就是字符串常量。

例如:“你好”“快乐”等。

4.6 符号常量——符号常量是由宏定义“#”定义的常量。 标识符可用于表示 C 程序中的常量。

示例:计算圆面积的C程序。

#include 
#define PI 3. main() 
{
float r,s; 
r=12.5; 
S=PI *r*r;
 printf(“s= %f ”,s);
 }

注:#为宏定义。 该程序中所有出现的PI都代表3。同时,PI被称为符号常数。 我们习惯上用大写字母表示符号常量,用小写字母表示变量,这样更容易区分。

05.变量

变量是其值可以改变的量。 变量必须有变量名并在内存中占据一定的存储单元。 存储单元存储变量的值。 不同类型的变量有不同的存储单元大小,变量在使用前必须定义。

5.1 整型变量——整型变量分为4种类型:基本类型(int)、短整型(short int或short)、长整型(long int或long)和无符号类型(int、short、long)。

不同的编译系统对上述四类整型数据所占的位数和数值范围有不同的规定。

类型说明符词用于描述“有符号”(即有正数和负数)。 如果不写,则表示有符号,用于描述“无符号”(只代表正数)。推荐一个10天入门C/C++公众号:C语言入门掌握它

5.2 实数类型变量——在C语言中,实数类型变量分为两种类型:单精度类型(float)和双精度类型()。

如:浮动a、b; 米;

在vc中,float类型数据在内存中占用4个字节(32位),type数据占用8个字节。 单精度实数提供 7 位有效数字,双精度实数提供 15 至 16 位有效数字。 实数类型常量不分为float类型和类型。 实型常量可以赋值给浮点型或类型变量,但变量根据其类型截取实型常量中对应的有效数。

注意:实型变量只能存储实型值。 整型变量不能用来存储实型值,实型变量也不能用来存储整型值。

5.3 字符变量——字符变量用于存储字符常量。 定义格式为:char变量名;

关键字char定义了字符数据类型,占用一个字节的存储单元。

示例: char cr1,cr2; cr1='A',cr2='B';

将字符赋值给字符变量时,该字符本身并不存储在内存中,而是将该字符对应的ASCII码存储在内存单元中。

由于字符在内存中以ASCII码存储,其存储形式与整数类似,因此C语言中的字符数据和整数数据可以互换使用。 字符可以以字符或整数的形式输出。 字符数据还可以以算术运算的形式输出,相当于对其ASCII码进行运算。

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

当同一个表达式中的数据类型不同时,编译器会在计算前自动将它们转换为相同的类型。 转换优先级为: char < int < float < 即左边的“低”类型转换到右边。

具体来说,如果表达式中优先级最高的数据是类型,则表达式中的所有其他数据都将转换为类型,计算结果也将是类型; 如果表达式中优先级最高的数据是float类型,则该表达式中的所有其他数据都转换为float类型,计算结果也为float类型。

进行赋值操作时,如果赋值号左右两侧的类型不同,则将赋值号右侧的类型转换为左侧的类型; 当右边的类型高于左边的类型时,转换时会截取右边的数据。

除了自动转换之外,还有强制转换,其表示方式为:(类型)(表达式);

示例:(int)(a+b)

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

07.C运算符的理解

C语言的运算符种类繁多,可分为以下几类:

另外,根据参与运算的对象数量,C语言运算符可以分为:一元运算符(如!)、二元运算符(如+、-)和三元运算符(如?:)。

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

8.1 基本算术运算符 - (1)+(加法运算符或正值运算符,如 2+5)。

(2)-(减法运算符或负值运算符,如4-2)。

(3)*(乘法运算符,如3*8)。

(4)/(除法运算符,如11/5)。

/的操作分为两种情况:

A。 当“除法”左右两边都是整数时,结果一定是整数(注意:只取整数部分,不四舍五入)。 例如:5/2的值为2,而不是2.5,1/2的值为0。

b. 当“除”的左右两边至少有一个是实数据(即小数)时,结果就是实数据。 例如:5/2.0 的值为 2.5,7.0/2.0 的值为 3.5。

(5) %(取模运算符或求余运算符,%两边都应为整数数据,例如9%7的值为2)。

需要注意的是,当操作数为负数时,不同编译器的结果不同。 在vc中,结果的符号与被除数相同,例如:13%-2的值为1,-15%2的值为-1。

8.2 算术表达式和运算符的优先级和结合性 算术表达式是使用算术运算符和括号来连接操作数(也称为操作数)的表达式,符合 C 语言的语法规则。 操作数包括函数、常量、变量等。

在计算机语言中,算术表达式的求值规则类似于数学中的四种算术运算的规则。 其操作规则及要求如下。

8.3 自增自减运算符——功能:将变量的值加1或减1。

例如:++i、--i(在使用i之前,将i的值加1或减1)。 i++,i--(使用i后,将i的值增加或减少1)。

(1)只有变量可以使用自增运算符(++)和自减运算符(--),但不能使用常量或表达式,如10++或(x+y)++是非法的。 。

(2)++和--组合的方向是“从右到左”,如-i++,i的左边是负号运算符,右边是自增运算符。 负号运算和自增运算都是“auto”从右到左的组合,相当于-(i++)。

自增(减法)运算符常用于循环语句中,也常用于指针中。 考生应理解“i++”和“++i”的含义以及“i--”和“--i”的区别,特别是表达式的值和变量的值。

09赋值运算符和赋值表达式

9.1 赋值运算符和赋值表达式——赋值符号“=”是赋值运算符。 它的作用是将一段数据赋给一个变量或者将一个变量的值赋给另一个变量。 由赋值运算符组成的表达式称为赋值表达式。 一般形式为:变量名=表达式。

您可以在程序中多次为一个变量赋值。 每次赋值时,相应存储单元中的数据就会更新。 当前内存中的数据是上次分配的数据。

示例:a=12; 该表达式为“将值 10 赋给变量 a”。

A。 如果赋值号两边的操作数类型不一致,系统会自动进行类型转换。 转换规则为:将赋值号右侧表达式的值类型转换为赋值号左侧变量的类型。

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

b. 您可以将复制的表达式的值分配给变量以形成连续赋值。 例如:x=y=25是连续赋值表达式,x=y=25等价于x=(y=25),所以表达式x=y=25的最终值为25。

9.2 复合赋值运算符——复合赋值运算符可以通过在赋值运算符之前添加其他运算符来形成。 与算术运算相关的复合运算符有:+=、-=、*=、/=、%=。

两个符号之间不能有空格,复合赋值运算符的优先级与赋值运算符相同。 表达式 n+=1 等价于 n=n+1。 它的功能是获取变量n中的值并将其加1,然后将其分配给变量n。 其他复合赋值运算符的运算规则类似。

例如,求表达式 a+=a-=a*a 的值,其中 a 的初始值为 12。

步:

首先进行“a-=a*a”运算,相当于a=aa*a=12-144=-132。 (2)然后进行“a+=-132”运算,相当于a=a+(-132)==-264。

9.3 逗号运算符和逗号表达式——在C语言中,逗号除了用作分隔符外,还可以用作运算符——逗号运算符。 用逗号运算符连接几个表达式,如a=b+c、a=b*c等称为逗号表达式。

一般形式为:表达式1、表达式2、表达式3、……、表达式n。 示例:x=2、y=3、z=4

逗号表达式从左到右关联,即先求解表达式1,然后依次求解表达式2,直到表达式n的值。 表达式n的值是整个逗号表达式的值。 上述逗号表达式的值是表达式z=4的值4。 需要注意的是,逗号运算符是所有运算符中最低级别的。

示例:有如下程序段:

main() 
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c); 
printf("y=%d,x=%d",y,x);
 }

程序显示结果为:y=6,x=6

讨论:改变y=(x=a+b),(b+c)的结果是什么; 到 y=((x=a+b),b+c)?

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

10.1 C 语言中的逻辑值 - C 语言中只有两种逻辑值:true 和 false。 使用非零表示 true,使用零表示 false。 因此,对于任何表达式,如果其值为零,则表示假值,如果其值非零,则表示真值。 只要该值不为零,无论是正数、负数、整数、实数,都代表真值。 例如,-5 的逻辑值为 true。

10.2 逗号运算符和逗号表达式

- “&&”和“||” 有两个操作数,因此它们都是二元运算符,并且! 只有一个操作数,因此它是一元运算符。 逻辑运算示例如下:

(1) a&&b:当&&两边都为“true”时,表达式a&&b的值为true。 值得注意的是,在数学中,关系 0

(2) a||b:当||两边之一为“true”,则表达式 a||b 的值为 true。

(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的值。 公式:“一个真理必须是真实的。”

11. 位运算

11.1 位运算符——在计算机中,数据以二进制数的形式存储。 位运算是指对存储单元中的二进制位进行的操作。 C语言提供了6种位运算符。

11.2 位运算

—按位运算符 & |~> ∧ 优先级从高到低的顺序为:

位运算符中,取反运算“~”优先级最高,而左移和右移相同,排名第二。 接下来的顺序是按位AND“&”、按位XOR“∧”和按位OR“|”。 顺序是~>&∧| 。

例1:左移运算符“”右侧的数字指定要移动的位数。 例如:假设a=15,a>>2表示右移小数3)。推荐一个10天入门C/C++公众号:C语言入门到精通

需要注意的是,对于有符号数,右移时,符号位也会随之移动。 当为正数时,最高位填充0,当为负数时,符号位为1,最高位填充0还是1取决于编译系统的规定。

例3:假设二进制数a为00,若通过异或运算a∧b将a的高4位取反,低4位不变,则二进制数b为。

分析:异或运算常用于翻转特定位。 只需将要翻转的位与 1 进行异或即可,因为原数中值为 1 的位与 1 进行异或得到 0,而原数的中间值为 0。将 0 的位与1 结果为 1。与 0 进行异或的位将保留其原始值。 XOR运算也可以用来交换两个值而不使用临时变量。

C语言在全世界都很流行。 无论是在中国还是在世界各地,C语言都是高等院校的一门计算机基础课程,在计算机领域发挥着重要的作用。

学习资料分享交流群:加入群,免费获得全套学习视频资料和电子书!

学习材料:

标签: 运算 表达式 变量

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码