C语言基础(一)C语言概述&数据类型,运算符与表达式


系列合集 初窥C语言

注:基于谭浩强《C语言程序设计》

一、C语言概述

1.1 C语言特点

(1)语言简洁,紧凑,使用灵活:32个关键字,9种控制语句,程序形式自由。
(2)运算符和数据类型丰富:34种运算符,具有现代语言的各种数据结构。
(3)程序设计结构化,模块化。
(4)生成目标代码质量高。
(5)可移植性好.

1.2 C程序的结构和执行步骤

1.2.1 结构示例

简单C语言程序(示例):

#include <stdio.h>     /*文件包含*/
void main()            /*主函数*/
{                      /*函数体开始*/
printf ( "hello world!\n" ) ;   /*输出语句*/
}                      /*函数体结束*/

格式特点:
(1)习惯用小写字母
(2)大小写敏感
(3)不使用行号,无程序行概念
(4)可使用空行或空格
(5)常用锯齿形书写格式

1.2.2 执行步骤

(1)编辑:程序代码的录入,生成源程序*.c
(2)编译:语法分析查错,翻译生成目标程序*.obj
(3)链接:与其他目标程序或库链接装配,生成可执行程序*.exe
(4)执行

1.3 算法的特征和表示

1.3.1 程序的组成

对数据的描述: 数据结构(data structure)
对操作的描述: 算法 (algorithm)
程序=数据结构+算法
完整的程序设计应该是:数据结构+算法+程序设计方法+语言工具

1.3.2 算法的概念

广义的说,为解决一个问题而采取的方法和步骤,就称为“算法”。
对同一个问题,可有不同的解题方法和步骤。要求:正确(结果对),质量(步骤少),简单(易理解)。

1.3.3 算法的特征

(1)有穷性:包含有限的操作步骤。
(2)确定性:算法中的每一个步骤都应当是确定的。
(3)有零个或多个输入:输入是指在执行算法时需要从外界获得的必要的信息。
(4)有一个或多个输出:算法的目的是为了求解,“解”就是输出。
(5)有效性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果。

1.3.4 算法的表示

可以用不同的方法表示算法,常用的有:自然语言,传统流程图,结构化流程图,N-S流程图,伪代码,PAD图等。

二、数据类型,运算符与表达式

2.1 C语言的数据类型

在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用 的空间,以及如何解释存储的位模式。
C中的类型可分为以下几种:
(1)基本类型:
它们算是算术类型,包括整数类型和浮点类型。
(2)枚举类型:
也算是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量 。
(3)void类型:
类型说明符void表示没有可用的值。
(4)派生类型:
包括:指针类型,数组类型,结构类型,共用体类型和函数类型。
数组类型和结构类型统称为聚合类型。函数的类型指的是函数返回值类型。
ps 类型区分方法不唯一

2.2 常量和变量

2.2.1 常量和变量

常量:在程序的运行过程中,值不能改变
直接常量:整形常量,实型常量(浮点型),字符型常量
符号常量:例如 :#define PRICE 30
变量: 变量表示内存中的一个存储区域(不同的数据类型,占用的空间大小不一样)

int num;  /*变量要先声明,后使用*/
num = 30;

2.2.2 标识符:

(1)关键字
(2)预定义标识符
(3)用户自定义标识符:英文字母,数字,下划线组成。开头字符一定是字母或下划线。

2.2.3 C语言变量的生命周期和作用域

变量类型生存周期作用域
局部变量auto:自动变量,离开定义函数立即消失只作用于该函数内部
register:寄存器变量,离开定义函数立即消失
static:静态变量,离开定义函数仍然存在
全局变量在程序运行期间一直存在static:静态变量,仅限于本文件内部调用
extern:外部存储变量,用于声明本文件将要用到的其他文件的变量

2.3 基本数据类型

2.3.1 整数数据

整数常量的表示方法:十进制整数,十六进制整数,八进制整数
整型变量:int i=10;
内存中存储为:0000000000001010
整形变量分类

类型说明符数的范围字节数
基本型int-32768~32767 即 -2^15 ~( 2^15-1)2
无符号基本型unsigned int0~65535 即 0~(2^16-1)2
短整形short int-32768~327682
无符号短整型unsigned short int0~655352
长整形long int-2147483648 ~ 2147483647即-2^31 ~ (2^31-1)4
无符号长整形unsigned long0~4294967395 即 0~(2^32-1)4
字符型char-128~127 或 0~2551

2.3.2 实数数据

实数常量的表示方法:十进制数形式,指数形式
实型变量:3.14159在内存中存放形式

+.3141591
数符小数部分指数

实型变量的分类:

类型说明符比特数(字节数)有效数字数的范围
单精度float32(4)6~710^-37 ~ 10^38
双精度double64(8)15~1610^-307 ~ 10^308
长双精度long double128(16)18~1910^-4931 ~ 10^4932

2.3.3 字符型数据

转义字符及其含义

转义字符转义字符的含义ASCII码
\n回车换行10
\t换行跳到下一制表位置9
\b退格8
\r回车13
\f走纸换页12
\\反斜线符“\”92
\’单引号符39
\“双引号符34
\a鸣铃7

字符数据在内存中的存储及使用方法:
例如: “x”的ASCII码为120
a=‘x’ ;在内存中存储为:01111000
字符常量与字符串常量比较:

形式字符数内存空间
字符常量’ x ’单个一个字节
字符串常量“ hello ”一个或多个字符串中字节数加1

字符串被存储在char类型的数组中,数组末尾为\0,这是空字符,C语言用它标记字符串的结束。

2.4 基本数据类型间的混合运算

2.4.1 自动转换

1)若参与运算的值的类型不同,先转换成同一类型,然后再运算。
2)转换按数据长度增加的方向进行,以保障精度不降低。
3)所有浮点运算都是以双精度进行的。
4)char型和short型参与运算时,必须先转换成int型。
5)在赋值运算中,赋值号两边的数据类型不同时,赋值号右边的值的类型转换为左边值的类型。
规则:
(1)实型赋予整形,舍去小数部分。
(2)整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
(3)字符型赋予整型,由于字符型为一个字节,而整型为两个字节,故将字符符ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符型。

2.4.2 强制类型转换

一般形式: (类型说明符)(表达式)
如: (float)a 把a转换为浮点型

2.5 运算符

2.5.1C运算符:

算术运算符+ - * / %
关系运算符> < == >= <= !=
逻辑运算符! && 丨丨
位运算符<< >> ~ 丨 ^ &
赋值运算符=
条件运算符? :
逗号运算符
指针运算符* &
求字节数运算符sizeof
强制类型转换运算符(类型)
下标运算符[ ]
++ii自增1后再参与其它运算
–ii自减1后再参与其它运算
i++i参与运算后,i的值再自增1
i–i参与运算后,i的值再自减1

2.5.2 运算符的优先级及结合性

优先级运算符含义要求运算对象的个数结合方向
++自增运算符1(单目运算符)自右至左
2-自减运算符1自右至左
(类型)类型转换运算符1自右至左
3*乘法运算符2(双目运算符)自左至右
3/除法运算符2自左至右
3%求余运算符2自左至右
4+加法运算符2自左至右
4-减法运算符2自左至右

2.6 表达式

算术表达式:用算术运算符和括号将运算对象(操作数)连接起来的,符合C语言语法规则的式子。
赋值表达式:<变量> <赋值运算符><表达式>
逗号表达式:表达式1,表达式2,表达式3,,,,,表达式n;
求值过程:分别求n个表达式的值,并以表达式n的值作为整个逗号表达式的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rpk712

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

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

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

打赏作者

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

抵扣说明:

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

余额充值