C语言数据类型、运算符、表达式
数据类型、运算符、表达式
常量:在程序运行中,其值不能被改变的量就叫常量。
150; //整型常量
12.3; //实型常量(浮点型常量),带小数点的
'a'; //用单引号引起来的 一个字符 叫字符常量。
变量:
标识符:好像人的名字(张三、李四),由
字母、
数字、
下划线三中字符组成,并且第
一个字符为
字母或者
下划线。 例如:test,icount,_myclass
保留字:系统保留起来,有特殊的用途,所以
不能将C语言中的保留字作为标识符使用,否则会出现语法错误。
变量名就是一个标识符,且变量名
区分大小写。 例如:int _myclass; int test;
整型
常量:
十进制数字: 123; -436; 0;
八进制数字:(以0开头的数字)012;(八进制的12)
十六进制数字:(以0x开头的数是十六进制数) 0x123; 0x12;
整型变量:
基本型:int 占四个字节
短整型:short int (short)
长整型:long int (long)
无符号型:unsigned int, unsigned short, unsigned long 只能保存不带符号的数字,不能存符号。
sizeof () 这个是一个运算符,作用是:看某种类型变量在计算机内存中占多少个字节。
整型变量的
定义:
int a,b,c;
unsigned int d,e,f;
int k = 189; //这里的 = 是定义变量的时候初始化
k = 678; //这里的 = 是赋值语句
short m = 189;
在一个常数后面加一个字母U,表示该常数用
无符号整型方式存储,相当于 unsigned int;
加一个字母L,表示该常数用
长整型方式存储,相当于 long;
加一个字母F,表示该常数用
浮点方式存储,相当于 float;
long int test = 189L;
int test2 = 23.12F; (这里只能把23存进去了)
unsigned abcde = 23U;
2.2、数据类型、运算符、表达式
十进制浮点数的表示形式:
0.12 3。1415926
指数形式的表达形式:
168E2 ==> 168 *10^2 (表示168乘以10的2次方) =16800 [也可以表示为 168E+2]
168E-2 ==> 168 *10^(-2) (表示168乘以10的-2次方) =1.68
实型变量:
float:单精度变量 ,一般提供7位
有效数字(保守估计6位),这个数字是随机器而异。
double:双精度变量 ,一般提供15到16位
有效数字(保守15位),这个数字是随机器而异的。
[有效数字举例分析:12345.678 10000.0 表示只有
一位有效数字导致此结果,这就是精度问题
12000.0 表示只有
两位有效数字导致此结果,这就是精度问题
12300.0 表示只有
三位有效数字导致此结果,这就是精度问题
12345.67x 表示只有
七位有效数字导致此结果
0.1234 0.1xxxxx 表示只有
一位有效数字
,小数点前面为0就不算一位
0.12xxxx 表示
两位有效数字
导致此结果
0.123xxx 表示
三位有效数字
导致此结果 ]
注意:浮点数在内存中的存储是以
指数形式来存储的!!所以浮点数保存的范围相当大。
float af1 = 0.5;
float af2 = 0.51;
这两个变量放在编译器上,在设置断点后,F5运行后,把鼠标放在这两个变量的上面,会发现结果不一样。
变量结果不一样的原因是,十进制赋值给实型变量的时候,计算机是把十进制数转换为二进制数来保存的,在我们鼠标读取的时候又把保存的二进制数转换为十进制数,因为二进制数转换为十进制数要用除法(例如:10/3=0.3333333......,0.3333333...*3到不了10=0.9999999999),所以就会造成精度的丢失,从而导致显示的结果不一样。因此,使用浮点数的时候要注意有效数字。
字符型数据
1、
常规字符:用单引号引起来的 一个 字符。
'a'; 'b';
2、
特殊字符:转义字符,以 \ 开头的字符序列。 \n 换行
'\n'
3、
字符变量:只能保存一个字符,因为一个字符型变量在内存中只占一个字节。
char c1,c2,c3;
c1 = 'a'; //与 C1=97;等价 实际上是吧字符对应的AscII码(数字)放到变量所代表的内存中。
c2 = 'b'; //与 C 2=98;等价
c3= '\';
4、
字符串常量:用一对双引号引起来的一堆字符(可以使一个字符,也可以是多个字符)“Hello world”,"wangjianwei"
注意:不要混淆了‘a’字符型常量(这个占用一个字节)与 "a"字符串常量(这个占用两个字节,最后有一个字符串结束标记的转义字符 \0 这个标记并不会输出)
在编辑字符串变量时,不用写这个结束标记,系统会自动生成。
5、
变量赋初值
int a = 3;
int a,b,c = 6; //这里只给c赋了值,对于没赋值的变量,其值是不确定的,不可以随意拿过来用。
注意:C语言中的规则是,先定义后使用。
6、数值型数据之间的混合运算
int a = 500;
double ad = 15.67;
double de = a + ad; //结果等于一个双精度型,计算前会进行数据类型转换:int类型 转换为 double 类型。
int + double = double;
char + int = int ;