2.1引例
2.2C语言数据类型
C语言提供了四种数据类型:基本类型、构造类型、指针类型、空类型。
基本类型:整型、字符型、实型(浮点型)
构造类型:数组类型、构造体类型、共用体类型、枚举类型
构造类型是根据以定义的一个或多个数据类型,用构造的方法来定义。
指针是C语言中一种特殊的,同时又具有重要作用的数据类型
2.3C语言的常量
#include<stdio.h>
#define PRICE
int main()
{ int num,total;
num=10;
total=num*PRICE;
printf("总价格为:%d\n",total);
return 0
}
2.3.1直接常量
直接常量又分为整型常量、字符常量、实型常量和字符常量。
1整型常量
整型常量即整数,包括正整数、负数和零。C语言中,整数型常量可以用十进制、八进制和十六进制表示。
注意
在一个整数常量后面加一个字母u或U,认为是unsigned int型,如246U.
在一个整数型常量后面加一个字母l或L,认为是long int,如12L.
2实型常量
即是实数,又称浮点数。C语言中,实数只能用十进制表示,实数的表示有两种方法:小数形式和指数形式。
小数形式:由整数部分、小数点和小数部分组成,当整数部分或小数部分为0时,可以省略不写,但是小数点不可以省略
指数形式:由尾数部分、字母E或e和指数部分构成,格式为:+-尾数E指数
注意
(10)以小数形式表示实数时,必须有小数点,并且小数点前后一边至少要有数字
(2)以指数形式表示实数时,字母E或e的前后必须有数字,并且指数部分只能是正数,如12. -E3
在C语言中,实型常量默认为是double型的实数
3字符型常量
指单个字符,用一对单引号及其括号括起来的字符表示。
1字符常量只能用单引号括起来,不能用双引号或其他括号
2字符常量只能是单个字符,不能是字符串。
3字符可以是ASCII集中的任意字符。按ASCII码的大小,不同的字符之间存在着次序,以字符的ASCII码大于数字字符的ASCII码。
说明:转义字符形式上由多个字符组成,但是它是一个字符常量,只代表一个字符。转义字符的使用方法与一般字符常量方法相同。
4字符串常量
2符号常量
1增加程序的可读性
2提高程序的可维护性
3简化程序代码
4方便数组的定义
2.4C语言中的变量
2.4.1变量的定义与使用
1变量的定义
其定义格式:
类型说明符 变量名表;
(1)类型说明符必须是c语言中的有效数据类型,如int、float、double、char等,用于指定变量的类型,该类型决定了编译时分配给变量的内存单元的多少。
(2)变量名表可以由一个或多个变量名组成,各变量名之间用“,”分隔。变量名必须是合法从C语言标识符,变量名一般用小写字母。
(3)变量的定义必须放在变量使用之前,一般在函数体的开头部分进行定义
#include<stdio.h>
int main()
{ int a,b,c;
char ch='A';
a=10:
b=a+ch:
scanf("%d",&c);
printf("%d,%d,%d,%c\n",a,b,c,ch);
return 0;
}
2.4.2整型变量
说明
1各种无符号整数所占的字节数与相应的有符号整数相同。但是由于省去了符号位,故不能表示负数。
2有符号整数以二进制补码形式存储。最右边第一个表示符号,该位为0,表示正数,该位为1,表示负数
3无符号整数以二进制原码形式存储
#include<stdio.h>
int main()
{ int a,b,c,d;
unsinged long e:
a=5;b=6;e=10;
c=a+e;
d=b+e;
printf("c=%d,d=%d\n",c,d);
return 0;
}
2.4.3实型常量
关键字 | 类型 | 占用字节数 | 取值范围 |
float | 单精度型 | 4 | 3.4E-38~3.4E+38 |
double | 双精度型 | 8 | 1.7E-308~1.7E+308 |
#include<stdio.h>
int main()
{ float a=1234.56789;
double b=1234.567895678;
printf("a=%f,b=%f\n",a,b);
return 0;
}
2.5运算符与表达式
C语言中赋值运算符有“=”、“+=”、“-=”、“*=”、"/="、“%=”等。用赋值运算符将运算对象连接而成的表达式称为赋值表达式。
1简单赋值运算符
最简单的赋值运算符就是“=”,它的作用是将一个数值赋给一个变量。
2复合赋值运算符
3赋值表达式
C语言中,赋值有语句属于表达式语句,赋值表达式是由赋值运算符将一个变量和一个表达式连接起来的式子所组成。其一般形式为:变量=表达式
2.5.2算术运算符和算术表达式
1基本的算术运算符
+ - * / %
(1)+ 加法运算符,又为双目运算符,其功能是进行求和运算
(2)- 减法作为单目运算符使用时,是取负运算,如-3,作为双目运算符使用时,是进行求差运算
(3)* 乘法运算符,为双目运算,功能是进行求乘积运算
(4)/ 除法运算符,为双目运算符,功能是求商运算。
(5)% 求余运算符,为双目运算符,功能是进行求余数的运算
求余运算要求参与运算的两个运算符对象都必须是整型,其结果也是整型。
2自增、自减运算符
两种特殊运算符"++"、"--“
(1)++自增运算符,为单目运算符,其功能是使变量的值自加1.自增运算符有两种形式:
A前缀方式:用于变量前面,如int a=++x,它是”先计算,后使用“,即先将x的值自加1,然后将x的值赋给变量a
B后缀方式:用于变量后面,如int a=x++ 它是”先使用,后计算“,即先将x的值赋给变量a,然后再将x的值加1
(2)--自减运算符,为单目运算,功能是是变量的值自减1,使用方法和自增运算符相似。
注意:自增和自减运算符的操作对象只能是一个简单变量,不能是常量或表达式,如6--、(a+b)++都是错误的
3算术运算符的优先性和结合性
单目运算符是右结合的,双目运算符是左结合的。算术运算符的优先级为:”++、--、-“>"* / %">"+ -"即单目运算符的优先级高于双目运算符,* / %的优先级高于+ -
2.5.3 逗号运算符和逗号表达式
#include<stdio.h>
int main()
{ iny i,j=7;
flost k=5;
i=(j=j+2,j/k);
printf("i=%d\n",i);
return 0;
#include<stdio.h>
int main()
{ intha,b;
a=sizeof(3+5.0);
b=sizeof3+5.0;
printf("%d,%d,%d\\",a,b,sizeof("china"));
return 0;
}
C语言中的逗号,也是一种运算符,又称逗号运算符,其功能是把多个表达式连接起来组成一个表达式,又称逗号表达式.逗号表达式一般形式:表达式1,表达式2,..表达式n
2.5.4求字节运算符
运算符sizeof用于计算数据努力下所占字节数,它是一个单目运算符,优先级高于双目运算符,其一般格式如下:(1)sizeof(表达式)或sizeof表达式
(2)sizeof(数据类型名)
2.6数据类型转换
2.6.1自动类型转换
2.6.2强制类型转换
是采用强制类型运算符将某种数据类型强制转换成指定的数据类型,其一般形式为(类型说明符)(表达式)
功能:把表达式的运算结果强制换成类型说明符指定的类型.
进行强制类型转换时需要注意:(1)需强制类型转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转换.
(2)强制类型转换是一种不安全的转换,如果是从高级类型转换成低级类型,则会损失数据的精度.
(3)强制类型转换并不改变表达式中变量的类型和值.