一、绪
源代码(源程序):一般把用高级语言编写的程序叫做源程序。
可执行程序(目标程序):高级语言编写的源程序并不能被计算机直接理解并运行,必须编译成机器语言(二进制代码),得到相应的程序功能。
流程:编辑源程序 ——> 编译生成目标程序 ——> 连接器生成可执行文件 ——> 运行可执行文件
二、基本概念
标识符:自定义名字
1)、标识符必须由英文字母、数字和下划线组成
2)、不能以数字开头
3)、字母区分大小写
4)、不能与关键字相同
数据类型
计算机内部采用的是二进制,如何判别01串的意思?
答:需要赋予该01串一个类型。
对象:一片内存(主存)区域。
对象类型:赋予该片内存区域中数据(01串)的含义。
C语言是强类型语言,任何对象都必须有明确的类型。
常量
常量就是一个确知的值。
1、整型常量
分为八进制、十进制、十六进制三种。
0表示八进制,如0123(等于十进制的84)
0x/OX表示十六机制,如ox124(等于十进制的292)
不加任何前缀,默认就是十进制
C的整型数据有很多种(short、long、unsigned、signed),如何判断出现的某种进制的数据究竟属于那种类型?
1)、不带任何整数后缀的十进制整数常量,按 int、unsigned int、long int、unsigned long int 的取值范围依次判定
2)、不带任何整数后缀的十六进制或八进制整数常量,按int、unsigned int、long int 或 unsigned long int 依次判定
3)、通过加后缀u/U(表示unsigned int或unsigned long int)、l/L(long int 或 unsigned long int)、或ul/uL/Ul/UL(unsigned long int)来指定整数常量的类型,
2、浮点型常量
指带有小数点或者指数部分的常量。如,1.2E+2,123.f,1e-4 (指数形式时以10为底,用e/E表示指数,指数部分必须为整数)
C89规定,浮点型常量只能用十进制。
浮点型常量的默认类型是double型。可通过后缀f/F(表示float型)、l/L(表示long double型)
3、字符常量
指用单引号括起来的一个字符或者一个转义字符序列。
说明:
C的基本运行字符集为ASCII字符集,一个char类型的变量占用一个字节的内存空间,编译时把用单引号括起来的一个字符或一个转义字符序列翻译成对应字符的ASCII码,以二进制的形式存储到分配的内存单元中。
如果单引号中的字符多于一个,一般选择取其最后一个字符。
4、字符串常量
指用双引号括起来的字符序列。
说明:
字符串以 \0 作为结束标志,字符串中间不能含有该字符,比如 “a”,在内存中实际存放的是97和0
字符串结束标志 \0 由编译器自动增加,程序中不用写出
变量
该标识符实际对应一块内存区域,数据存放在改内存区域中。
C的变量,必须先申明,后使用。
格式:[类型修饰符] [存储区分符] 类型区分符 变量名1[,变量名2...] ;
整型变量
对于有符号数,0代表正,1代表负
不同类型的变量占用的内存单元数不同,且与平台相关。
无符号数在计算机内部用原码表示;有符号数在计算机内用补码表示。
正整数的原码、反码和补码都一样。
负数的反码是将原码中除符号位之外的其余位依次取反。负数的补码在反码的基础上加1,符号位不发生变化。
表达式是由操作数(被操作的对象)和运算符(对对象的某种操作符号)组成的序列。
表达式也有类型,等同于计算结束后所得的类型。
位运算
位运算操作数必须是整型。
1)、位移运算
不改变原操作数的值。
右移(>>),将保持符号位不变,最低位移除;左移(<<)时低位补0,高位移除
2)、位非 ~
不改变原操作数的值。
所有位取反。
3)位与(&)、或(|)、异或(^)
不改变原操作数的值。
负数按补码形式
&:两位同时为1,才为1,否则为0
|:只要有1个为1,其值位1
^:对应位不同,结果为1,否则为0
如果操作数1和2长度不同,对较短的操作数进行整型提升。
类型转换
1)、强制类型转换
(类型)表达式
说明:
高低类型互相转换,但从高类型转到低类型可能引起精度丢失。
浮点型到整型的转换必须强制执行,只转换浮点数的整数部分,而不是四舍五入。
2)、自动类型转换
参与运算的操作数的类型可以不同,但在运算时会自动把他们转换为同一类型,然后再运算。
doublie > float > long > unsigned > int
转换的实质是,把表示范围小、精度低的数据类型转换为表示范围大、精度高的数据类型,又称类型提升。
C语言基本概念
原文:https://www.cnblogs.com/cshaptx4869/p/10859182.html