加载中...
C语言学习
发表于:2021-07-22 |

C语言学习(一)

起源

1972年, 贝尔实验室的丹尼斯·里奇(Dennis Ritch) 和肯·汤普逊(Ken
Thompson) 在开发UNIX操作系统时设计了C语言。 然而, C语言不完全是里
奇突发奇想而来, 他是在B语言(汤普逊发明) 的基础上进行设计。 至于 B
语言的起源, 那是另一个故事。 C 语言设计的初衷是将其作为程序员使用的
一种编程工具, 因此, 其主要目标是成为有用的语言。

基础规则

示例

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(void) /* 一个简单的C程序 */
{ int
num; /* 定义一个名为num的变量 */
num = 1; /* 为num赋一个值 */
printf("I am a simple "); /* 使用printf()函数 */
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}

变量命名

可以用小写字母、 大写字母、 数字和下划线(_) 来命名。 而且, 名称
的第1个字符必须是字符或下划线, 不能是数字。

有效 无效
wiggles $Z]**
cat2 2cat
Hot_Tub Hot-Tub
taxRate tax rate
_kcab don’t

保留字

关键字

基本数据类型

  1. 整数类型int

    C语言提供3个附属关键字修饰基本整数类型: short、 long和unsigned。
    应记住以下几点。
    short int类型(或者简写为short) 占用的存储空间可能比int类型少, 常
    用于较小数值的场合以节省空间。 与int类似, short是有符号类型。
    long int或long占用的存储空间可能比int多, 适用于较大数值的场合。 与
    int类似, long是有符号类型。
    long long int或long long(C99标准加入) 占用的储存空间可能比long多,
    适用于更大数值的场合。 该类型至少占64位。 与int类似, long long是有符号类型。
    unsigned int或unsigned只用于非负值的场合。 这种类型与有符号类型表
    示的范围不同。 例如, 16位unsigned int允许的取值范围是0~65535, 而不是-32768~32767。 用于表示正负号的位现在用于表示另一个二进制位, 所以无符号整型可以表示更大的数

  2. 字符型char

    char类型用于储存字符(如, 字母或标点符号) , 但是从技术层面看,
    char是整数类型。 因为char类型实际上储存的是整数而不是字符。 计算机使
    用数字编码来处理字符, 即用特定的整数表示特定的字符。 美国最常用的编
    码是ASCII编码, 本书也使用此编码。 例如, 在ASCII码中, 整数65代表大写字母A。 因此, 储存字母A实际上储存的是整数65(许多IBM的大型主机使
    用另一种编码——EBCDIC, 其原理相同。 另外, 其他国家的计算机系统可
    能使用完全不同的编码) 。
    标准ASCII码的范围是0~127, 只需7位二进制数即可表示。 通常, char
    类型被定义为8位的存储单元, 因此容纳标准ASCII码绰绰有余。 许多其他系
    统(如IMB PC和苹果Macs) 还提供扩展ASCII码, 也在8位的表示范围之
    内。 一般而言, C语言会保证char类型足够大, 以储存系统(实现C语言的系统) 的基本字符集。
    许多字符集都超过了127, 甚至多于255。 例如, 日本汉字(kanji) 字符
    集。 商用的统一码(Unicode) 创建了一个能表示世界范围内多种字符集的
    系统, 目前包含的字符已超过110000个。 国际标准化组织(ISO) 和国际电
    工技术委员会(IEC) 为字符集开发了ISO/IEC 10646标准。 统一码标准也与
    ISO/IEC 10646标准兼容。
    C语言把1字节定义为char类型占用的位(bit) 数, 因此无论是16位还是
    32位系统, 都可以使用char类型。

    转义支付

    image-20210723114546983

  3. 布尔类型

    C99标准添加了_Bool类型, 用于表示布尔值, 即逻辑值true和false。 因
    为C语言用值1表示true, 值0表示false, 所以_Bool类型实际上也是一种整数
    类型。 但原则上它仅占用1位存储空间, 因为对0和1而言, 1位的存储空间足
    够了。

  4. 浮点数(float、 double和long double )

    ​ 1.声明浮点型变量
    浮点型变量的声明和初始化方式与整型变量相同, 下面是一些例子:
    float noah, jonah;
    double trouble;
    float planck = 6.63e-34;
    long double gnp;
    ​ 2.浮点型常量
    在代码中, 可以用多种形式书写浮点型常量。 浮点型常量的基本形式是: 有符号的数字(包括小数点) , 后面紧跟e或E, 最后是一个有符号数表示10的指数。 下面是两个有效的浮点型常量:
    -1.56E+12
    2.87e-3
    正号可以省略。 可以没有小数点(如, 2E5) 或指数部分(如,19.28) , 但是不能同时省略两者。 可以省略小数部分(如, 3.E16) 或整数部分(如, .45E-6) , 但是不能同时省略两者。 下面是更多的有效浮点型常量示例:
    3.14159
    .2
    4e16
    .8E-5
    100.
    145
    不要在浮点型常量中间加空格: 1.56 E+12(错误! )默认情况下, 编译器假定浮点型常量是double类型的精度。 例如, 假设some是float类型的变量, 编写下面的语句:
    some = 4.0 * 2.0;
    通常, 4.0和2.0被储存为64位的double类型, 使用双精度进行乘法运算, 然后将乘积截断成float类型的宽度。 这样做虽然计算精度更高, 但是会减慢程序的运行速度。
    在浮点数后面加上f或F后缀可覆盖默认设置, 编译器会将浮点型常量看作float类型, 如2.3f和9.11E9F。 使用l或L后缀使得数字成为long double类型, 如54.3l和4.32L。 注意, 建议使用L后缀, 因为字母l和数字1很容易混
    淆。 没有后缀的浮点型常量是double类型 。

  5. 使用数据类型

    编写程序时, 应注意合理选择所需的变量及其类型。 通常, 用int或float
    类型表示数字, char类型表示字符。 在使用变量之前必须先声明, 并选择有
    意义的变量名。 初始化变量应使用与变量类型匹配的常数类型。 例如 :

1
2
int apples = 3;  /* 正确 */
int oranges = 3.0; /* 不好的形式 */

把一个类型的数值初始化给不同类型的变量时, 编译器会把值转换成与
变量匹配的类型, 这将导致部分数据丢失。 例如, 下面的初始化:

1
2
int cost = 12.99; /* 用double类型的值初始化int类型的变量 */
float pi = 3.1415926536; /* 用double类型的值初始化float类型的变量 *
上一篇:
(5)LED外设控制
下一篇:
建立CSV
本文目录
本文目录