目录
2.1简单C格式语言程序的构成和格式
C语言规定必须用main作为主函数名,如
main(){}
程序中的main()是函数的起始行,也是C程序执行的起始行。(main函数后面的圆括号可以为空,但不能不写)
每一个可执行的 C程序必须且只能有一个主函数。
用花括号{ }括起来的部分为函数体。
定义语句用分号;结束。C程序中的每一条执行语句都必须用分号结束,分号是C语句的一部分,不是语句之间的分隔符。
在/* */内的内容为注释,其中的内容会被编译器忽略不会执行,但可以增加程序的可读性。
命令行必须用#开通,行尾不能加;,它不是C程序中的语句。
2.2标识符、常量和变量
2.2.1标识符
大写字母和小写字母会被认为是两个不同的字符。
(1)关键字:已有专门的用途,不能再用作变量名或函数名。
(2)预定义标识符:C语言预先定义并具有特定含义的标识符,不建议另作他用。
(3)用户标识符:由用户根据需要定义的标识符成为用户标识符,尽量选择具有一定含义的英语单词或汉语拼音作为标识符。
2.2.2常量
常量就是指在程序运行过程中,其值不能被改变的量。
2.2.3符号常量
在C语言程序中,可以用一个符号名来代表一个常量,称为符号常量,如
#define 符号名 常量
意为定义符号名为常量。
凡是本程序中出现这个符号名均已这个常量替代。
define为命令行,必须用#开头且结尾不能有;
2.2.4变量
变量是指在程序中其值可以改变的量。
变量实质上代表了内存中的若干个存储单元。
在C语言中,所有的变量必须先定义后使用。
2.3整形数据
2.3.1整型常量
整形常量可以用十进制,八进制,十六进制等形式展示。
十进制数:一串连续的数字表示。(前面不能随便添加数字0)
八进制数:一串合法的八进制数,开头必须是数字0.
十六进制数:用数字0和字母x开头,其中a.b.c.d.e.f和x用小写也可以用大写。
在C程序中,只有十进制数可以是负数,而八进制数和十六进制数只能是整数。
2.3.2整形变量
整型变量可以分为基本型、短整型、长整型、无符号型四种。
编译程序仅为开辟存储单元,而没有在存储单元中存放任何初值,此时变量中的值是无意义的,称变量值“无定义”。
C语言规定,可以在定义变量的同时给变量赋初值,也称变量的初始化。
2.3.3整形数据的分类
汉语名称 | 类型名称 | 占用字节数 | 数值范围 |
(有符号)短整形 | [signed] int | 4 | -2147483648~2147483647 |
(有符号)短整型 | [signed] short [int] | 2 | -32768~32767 |
(有符号)长整型 | [signed] long [int] | 4 | -2147483648~214783647 |
无符号(整型) | unsigned [int] | 4 | 0~4294967295 |
无符号短(整型) | unsigned short [int] | 2 | 0~65535 |
无符号长(整型) | unsigned long [int] | 4 | 0~4294967295 |
2.3.4整数在内存中的存储格式
内存储器的最小存储单位称为“位(bit)”。大多数计算机把八个二进制位组成一个“字节(byte)”。
通常把一个字节中最右边一位称为最低位,最左边一位称为最高位。在有符号数中,正整数最高位为0,负整数最高位为1.
(1)正整数:用“原码”的形式存放。
(2)负整数:以“补码”的形式存放。
原码:这个数的二进制形式。
反码:除了符号位以外取反。
补码:反码加1.
2.4实型数据
2.4.1实型常量
实型常量又称实数或浮点数。
(1)小数形式:必须要有小数点。
(2)指数形式:字母e或E之前必须要有数字,后面的指数必须为整数且不能插入空格。(字母e或E后面的数表示前面的小数点移动几位,正数向前移动,负数向后移动)
2.4.2实型变量
实型变量 | 单精度型 | 双精度型 |
类型名称 | float | double |
占用字节数 | 4 | 8 |
有效数字 | 7 | 15~16 |
精度 | -10^38~10^38 | -10^308~10^308 |
在内存中,实数一律以指数形式存放的。
计算机可以精确地存放一个整数,但数值范围较小,实型数值范围较大,但会有一定误差。(尽量不要判断两个实行数值的大小,因为误差的的存在,一般不会完全相同)
2.5算数表达式
2.5.1基本的算数运算符
基本的算数运算符有:+、-、*、/(取商)、%(去余数)均为双目运算符(必须有两个对象)
除了%必须是整数以外,其他的整数实数都可以。
2.5.2运算符的优先级、结核性和算术表达式
() | + | - | * | / | % | + | - |
单目 | 双目 | ||||||
同级 | 同级 | 同级 | |||||
左高右低 |
只有单目运算符的结合性是从右往左的,其余的运算符的结合性都是从左往右的。
(1)在算数表达式中,可使用多层圆括号,但左右括号不许配对。
(2)有不同优先级的运算符时,优先级从高到低进行,优先级相同时,从左到右依次计算。
2.5.3强制类型转换表达式
强制类型转换表达式形式如下
(类型名) (表达式)
2.6赋值表达式
2.6.1赋值运算符和赋值表达式
= 为赋值运算符,由赋值运算符组成的表达式称为赋值表达式
变量名=表达式
每附一次值,与他相应的存储单元中的数据就被更新一次,内存中当前数据就被更新一次,内存中当前的数据就是最后一次所赋的那个数据。
说明:
(1)赋值运算符的优先级只高于逗号运算符,比任何其他运算符的优先级都低。
(2)赋值运算符不是数学中的等于,这不是等同的关系,而是将表达式的值赋予一个变量
(3)赋值表达式x=x并没有实际意义
(4)表达式n=n+1也是和合法的表达式,即把n的值加一后重新赋值给n
(5)赋值运算符的左侧只能是变量,不能是常量和表达式。
(6)在C语言中,= 被视为一个运算符。
2.6.2复合赋值表达式
n+=1 等价于 n=n+1
n-=1 等价于 n=n-1
n*=1 等价于 n=n*1
n/=1 等价于 n=n/1
n%=1 等价于 n=n%1
(这两个符号之间不能有空格)
2.6.3赋值运算中的类型转换
在赋值运算中,只有在复赋值号右侧表达式的类型与左侧变量完全一致时,赋值操作才能进行。
如果不同时,转换规则如下:
(1)一个是短整型,一个是长整型,,则将短整型转换为长整型。
(2)一个是有符号整型,一个是无符号整型,则将有符号整型转换为无符号整型。
(3)赋值号右边的值先转换成与赋值号左边的变量相同的类型。
(4)短整型变量只能接受长整型数低位上两个字节中的数据,高位上两个字节中的数据将丢失。
(5)赋值号左边的变量为有符号整型,右边的值为无符号整型时,若符号位为1,将按负数处理。
2.7自加、自减运算符和逗号运算符
2.7.1自加运算符“++”和自减运算符“++”
(1)自加运算符“++”和自减运算符“++”的运算结果是使运算对象的值加1或减1。
(2)运算符“++”和“--”是单目运算符。
(3)运算符“++”和“--”的结合方向是“自右向左”
2.7.2逗号运算符和逗号表达式
“,”是C语言提供的一种特殊运算符,用逗号将表达式连接起来的式子称为逗号表达式。
逗号表达式的一般形式为:
表达式1,表达式2,...,表达式n
说明:
(1)逗号运算符的结合性是从左往右的。
(2)在所有运算符中,逗号运算符的优先级最低。