俗话说:学好c语言,走遍天下都不怕

c语言的重要性

C语言产生于1972年,是计算机的一种高级语言,目前在国际上还是很流行的,因为它具有低级程序语言的功能,所以也有人说它是中级语言。

对于大多数程序员来说。C语言是学习编程的第一门语言,也可以说是入门语言,C语言是现在众多高级语言的鼻祖。

一、第一个c程序:hello,world

#include<stdio.h>
int main()
{
	//屏幕上打印双引号中的内容其中\n是转义字符(不打印)
	printf("hello,wrold!\n");
	return 0;
}

执行程序后,在显示器上打印的内容:

程序说明:

  • main在c程序中有且仅有一个,是程序的入口
  • 而因为使用了printf所以要引用头文件#include<stdio.h>(printf是c语言标准库函数,定义与头文件<stdio.h>)
  • printf函数一般格式为:printf("<格式化字符串>",<参量表>)

二、注释

在c程序中注释有两种

注释是给程序员看的,编译器不看

多行注释:/*要注释的内容*/   (不能嵌套)

单行注释://要注释的内容

三、c语言基本字符

1)关键字

关键字又称为保留字,是c语言预先声明的具有特殊意义的单词,用户不能将这些关键字作自定义的标识符

a)数据类型关键字:char、double、float、int、long、short、unsigned、union、viod、enum、signed、struct 等

b)控制语句关键字:do、break、case、continue、for、goto、return、else、default、if、while、switch、extern 等

c)储存类型关键字:auto、register、static 等

d)其他关键字:const、sizeof、typedef、volatile、inline 等

2)标识符

c语言对标识符规定:

  • 构成:以字母或下划线“_”开头,后面由字母、数字、下划线组成
  • 大小写字母含义不同,例如,name和Name是两个不同的标识符
  • 一般c语言不对标识符的长度限制,但受c语言编译器限制(一般长度最好不要超8位,有些编译器会将前8位相同的标识符,认为是一个相同的标识符)

3)运算符

  • 算术运算符

 注:a++与++a的区别是:前者是先使用,再自增,后者是先自增,再使用。例如:

 

 注:a--与--a的区别是:前者是先使用,再自减,后者是先自减,再使用。例如:

 

部分运算符的优先级和结合性

 

 /运算

注:对于/运算,其操作数可以为整型或实型的常量、变量和函数。如果两个操作数中有一个是实型,则结果为实型,若两个操作数都是整型,则觉果为整形(舍去小数部分,没有四舍五入

例如:5/2.0=2.5,5/2=2

而如果除数或被除数中有一个为负值,则按照c99规定,除运算舍入的方向采用向0舍入

例如:-9/7的值为-1

最后你们认为这个表达式的结果是多少呢?

2/3*1000(答案在最下面)

%运算

%运算符要求两个操作数必须为整数,其运算结果等于两数相除后的余数,余数的符号始终与分子(被除数)的符号一致。

要注意分母(除数)不能为0

例如:9%2=1,9%3=0,-9%4=-1,9%-4=1,-9%-4=-1

此外C语言支持求负运算,例如-(+9)的结果为9,-(+(-5))的结果为5

4)sizeof运算符

运算符sizeof是求某一操作对象占用的内存字节数,其运算结果为整型数据 如下表:

 如果操作数为数据类型标识,则必须用括号括住,如sizeof(int);如果操作数是表达式,则可用可不用,如(sizeof(var_name)),sizeof var_name 等都是正确形式。

注:sizeof操作符不能用于函数类型、不完全类型或位字段。

sizeof(max)/*若此处max定义为interesting马修();*/
sizeof(void)

上面示例均为不正确的使用形式

c规定:sizeof(long long)>=sizeof(long)>=sizeof(int)>=sizeof(short)

四、数据类型

 

1)常量

在c语言中常量有三大类:数、字符、字符串。

常量:在程序执行中,其值不能改变的量称为常量

整型常量简称整数,在c语言中整型常量用三种数值来表示:

        1.十进制整数:数码取值范围为0~9

        2.八进制整数:数码取值范围为0~7,通常以数字0开头。如十进制数12,用八进制来表达为014

        3.十六进制整数:数值取值范围为0~9、A~F或a~f,通常已0x(数字0和字母x)或0X开头。如0x1b23、0X2B等。

2)实型常量

在计算机科学中,把带小数的数称为实数。c语言中的实数有float(单精度)和double(双精度)实数,它们在计算机内存中是以浮点数形式存放的,又称浮点数,实型常量只能用十进制形式来表示,不能用八进制和十六进制表示。

实型有两种表示方法:

        1.十进制形式:由数码0~9、小数点及正负号组成。

        2.指数形式:由十进制a,加阶码标识e或E以及阶码n组成。如aen或aEn。

        其中a为实数,n为十进制整数,“E”或“e”两边必须有数字。

        如:2.1e5(2.1*10^5)、5.4E-8(5.4*10^-8)、-9.9E-5(-9.9*10^-5)

3)字符型常量

字符常量是由一对单引号括起来的的单个字符构成,例如'a'、'B'、'1'等都是有效的字符型常量

在c语言中字符是用其对应的ASCII码值来表示的,一个字符占一个字节。例如字符'a'、'B'、'0'的ASCII码值分别为97、57、48.

c语言中还有一种特殊形式的字符常量,这就是一反斜杠'\'开头,后面跟一个或几个字符,它们便没有原来的意义了而是具有特殊意义,故也称为“转义字符”。

例如:'\n'表示换行字符,他的ASCII码值为10,在字符常量中要使用单引号和反斜杠时,必须用转义字符,即在这些字符前加上反斜杠  '\\' '\''

 

给大家推荐一个好玩的程序:

测试'\a'响铃

 

4 )字符串常量

在c程序中编写时使用一对双引号括起来的字符序列就是字符串常量

注:这里的双引号仅起定界符作用,并不是字符串中的字符。

字符串常量在内存中存储时,除了一个字符占一个字节外,还会自动在其尾部增加一个转义字符'\0',用这个特殊的字符作为字符串结束的标识。或者说,若干个字符后有了结束标识,'\0,'才称为c语言的字符串。

 

例如字符串"computer"包含8个字符,但其在内存中占用9个字节 如下表

computer\0

系统规定字符串的结束标识'\0'的值是0。因此,'\0'的写法等同于0,而不等同与'0',

因为'\0'的ASCII码值为0,'0'的ASCII码值为48。

程序说明 :printf()函数输出4个常量的值,前两个常量的类型是字符常量,后面两个是字符串常量。

  • 第一个字符是转义字符'\''
  • 第二个字符是转义字符'\\'
  • 第一个字符串常量是"ab\"c\"",它包含两个双引号“"”,在字符串中用转义字符表示
  • 第二个字符串常量是"a\\b",它包含了一个反斜杠“\”,在字符串中用转义字符表示

字符串中字符的个数(不包括结束标识'\0')称为字符串长度。因此字符串“a”长度为1,储存

长度为2,字符串"ab\"c\""长度为5.

以上几种常量一般从字面上即可判别,统称为字面常量或直接常量。

5)符号常量

在c语言中还可以用标识符来代表一个常量,符号常量在使用之前必须先定义。

使用宏定义命令#define定义符号常量。一般形式为:

#define 标识符 常量表达式

 

#include<stdio.h>
#define PI 3.14
int main()
{
	float r, s, v;
	scanf("%f", &r);//输入球的半径
	s = 4 * PI * r * r;//求球的表面积
	v = r * s / 3;//求球的体积
	printf("s=%f v=%f\n", s, v);
	return 0;
}

本程序中用#define宏定义命令定义PI,它代表常量3.14,此后凡在本程序中出现PI都代表3

.14,它和常量一样参运算。

习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别

用字符常量的好处是含义清楚,也可以实现“一改全改”的效果

#define PI 3.1415926
#define	PI2 PI*2 //定义PI2符号常量,值为2*3.1415926

宏定义中常数表达式可由常量、以声明过的符号常量和运算符组成

如果那些常量没有讲到的 欢迎补充!!!

6)变量

变量与常量相对,顾名思义:在程序运行过程中其值可以发生变化的一种数据对象称为变量

每一个变量都用一个标识符来表示,该标识符称为变量名。每一个变量都属于某个确定的数据类型,在内存中占一定的存储单元,在该存储单元中存放变量的值。

变量具有属性如下:

  • 地址:变量所在存储单元编号。不同类型的变量占据不同数量的存储单元,存放变量第一个存储单元地址(变量的起始地址)就是该变量的地址
  • 变量名:变量所在存储单元起始地址的助记符
  • 变量值:存储在相应存储单元中的数据,即该变量所具有的值。程序通过变量名存取该存储单元的值
  • 类型:变量所属的数据类型。类型决定了变量的存储方式(该变量占据的存储单元的字节和存储格式)以及允许对变量采取的操作

如图变量a的属性:类型为int,分配在1000开始的存储单元中,它的值为10

 

int i, j num;//说明i,j,num为整形变量
float a, b, sum;//说明a,b,sum为实型变量
char ch, c;//说明ch,c为字符型变量

        1,整型变量 

                 例如:int i =7

整形变量在内存中的存储形式

十进制7的二进制形式为111,但在内存中却占4个字节

 

        整型变量的分类

        整型变量的基本类型符为int,可以根据数值的范围将变量定义为基本整形、短整型、长整型

在int之前可以根据需要加上修饰符:short(短型)、long(长型)

        a.基本整形:int

        b.短整型:short int  或 short

        c.长整型:long int   或long

        一个int型变量的取值范围-2^31~(2^31)-1

        加上unsigned修饰符以指定其“无符号数”

        加上signed修饰符以指定其“有符号数”

        例如:        有符号基本整形:[signed] int 

                           有符号基本整形:[signed] short [int]

                           有符号基本整形:[signed] long [int]

                           无符号基本整形:[unsigned] int 

                           无符号基本整形:[unsigned] short [int]

                           无符号基本整形:[unsigned] long [int]

其中 signed一般省略       方括号可有可无

类型字节数
int 4
unsigned int4
short2
unsigned short2
long4
unsigned long4

程序说明:int类型的整形变量允许的最大值为2147453647,如果加1会溢出

 

当数据超过范围时就会溢出,但运行时不会报错,所以加1后并不能得到2147483648,而是-2147483648 

        2.实型变量

                实型变量分为单精度(float)、双精度(double)和长双精度(long double)

                在vs2019的环境下结果如下:

                初学者知道有long double即可

        3.字符型变量

                

类型字节数取值范围
[signed char]1-128~127
unsigned char10~255

   

int main()
{
	char ch1, ch2 = 0;
	ch1 = 'a';
	ch2 = 'b';
	ch1 = ch1 - 32;//字母大写转下写运算    小写字母的ASCII码值比大写字母多32
	ch2 = ch2 - 32;
	printf("%c %c\n",ch1, ch2);//以字符形式输出
	printf("%d %d\n", ch1, ch2);//以整数形式输出
	return 0;
}

                执行结果:

        如果将程序中 ch1='a';ch2='b';  改为 ch1=97;ch2=93; 结果不变

注:不能把字符串常量赋值给字符型变量  如char ch ="a";

"a"占两个字节,而字符型变量仅有一个字节的容量

在从语言中如果想把字符串存到变量中,可以使用字符数组,数组中每个元素存放一个字符

 

 最后表达式2/3*1000的值为0,因为2/3的值为0。

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨曦的iPhone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值