c语言的数据类型,运算符和表达式

一.基本字符,关键字和标识符

1.基本字符

基本字符分为源字符集和执行字符集。
源字符集就是数字,大小写字母,格式符,还有一些特殊字符,如!,+,-,*之类的。
格式符

字符含义
%a,%A读入一个浮点值(仅C99有效)
%c读入一个字符
%d读入十进制整数
%i读入十进制,八进制,十六进制整数
%o读入八进制整数
%x,%X读入十六进制整数
%s读入一个字符串,遇空格、制表符或换行符结束。
%f,%F,%e,%E,%g,%G用来输入实数,可以用小数形式或指数形式输入。
%p读入一个指针
%u读入一个无符号十进制整数
%n至此已读入值的等价字符数
%[]扫描字符集合
%%读%符号

执行字符集就是程序执行期间解释的字符集,如,字符串终止符——null或者警报——alert,等等。
如果用到程序中用到警报,就需要用转义字符“/”来使用。
转义字符主要用来表示那些用一般字符不便于表示的控制代码。

下面是常用的转义字符及其含义

转义字符含义
\a鸣铃
\n回车换行
\t横向跳到下一制表位置
\v竖向跳格
\b退格
\r回车
\f换页
\\反斜线符"\"
\’单引号符
\"双引号符

2. 关键字

关键字就是 int,float,if, do之类的

3.标识符

标识符就是名称,像sum,student,用来表示数组,函数,通常由字母数字或者下划线 _ 组成,但第一个字符只能是字母或者下划线
合法变量名:
add,sum,math
不合法
3a,#3A

注意
通常情况下,下划线是给系统使用,建议读者不以下划线开头。
严格区分大小写

二 数据的表现形式和基本数据类型

三 常量

1 整形常量

  1. 十进制与八进制的长整型都是数字序列后加L,如:123L,0L。
  2. 十六进制以0x或0X开头,数字1~ 9,字母a~f 或A ~ F
  3. 当表示机械码,都是无符号数。

2.实型常量

  1. 当小数部分或整数部分为零时,0可以省,但小数点不可以。
  2. 指数形式 e或E表示以十为底且前面必须有数字,如1E6=1*10^6,但E6为错误格式。

3.字符常量

  1. 26字母A~Z ASCII码为65 ~90,小写字母为97 ~ 122,差32位。
  2. 字符型常量用‘’括住。

4.字符串常量

  1. 由双引号括起
  2. 字符型常量只能由1个字符构成,字符串以由0个,1个,多个构成。
  3. 字符型占一个储存空间,字符串再加一字节,存放“\0”。

5.符号常量
用宏定义#define定义后使用

四.变量的定义和使用

  1. &为取地址
  2. 对于几个变量赋一个值
int m=5,n=5;
不能写为 
int m=n=5;
可以写为
int n
int m=n=5;

五 变量的基本数据类型

1.整型变量

1.基本整形: int ,短整型:short int或short,长整型:long int或long,
无符号型 前面加unsigned(没有符号位,所以最大值绝对值大于有符号位。)如:unsigned int
unsigned short。(没有说明,默认有符号)
int为4字节,二进制32位
虽然c语言中表示整数时可以采用八进制,十进制和十六进制,但数据在内存中存放形式只有一种——二进制,并且是以二进制的补码形式存放的。
在计算机单位里,最基本的单位是bit 在bit位里存放的都是计算机能够识别的二进制数0和1, 而字节是单位byte,1 byte = 8 bit,所以8个框就是1个字节的大小。
注意:
一个类型说明符(int)可以定义多个变量(a,b,c),且用逗号隔开,int与变量至少一个空格隔开,以分号结尾。变量的定义放在函数体的开头部分(先定义后使用)
2.实型变量

数据类型字节位数有效数字位数
单精度flooat4(32)6
双精度double8(64)15

符号位:第31位
指数部分:第30位到第23位,共8位,存储科学计数法中的指数数据。
尾数部分:第22位到第0位,23位。
3.字符型变量
字符型变量在内存中一ASCII的二进制形式,对于字符‘a’,储存的十97 01100001,但字符型数据占1字节。 因此在ASCII范围内可以通用(就看是%的%d,还是%c)
编程实现大小写字母之间的转换。

# include < stdio . h > 
int main ()
{
 char ch1,ch2;
 chl =' a ';
 printf (" 小写字符 :\ n ");
 printf ("% c \ n ",ch1);
 ch2=ch1-32;
 printf (" 大写字符 :\ n "); 
 printf ("% c \ n ",ch2);
 return 0;
 }
程序运行结果如下:
小写字符 a
大写字符 A

编程实现字母和数字之间的转换。

# include < stdio . h >
 int main ()
 char chl ,ch2;
 {
 chl =' a ';
 printf (" 之前 :\ n ");
 printf ("% c \ n ",ch1);
 ch2= chl ;
 printf (" 之后 :\ n ");
 printf ("%d \ n ",ch2);
 return 0;
 }
程序运行结果如下:
 之前 :
 a 
 之后 :
97

注意%d与%c。凭借这个相互转化。

六.运算中数据类型的转换

100+‘b‘*10/2+3.1415这个表达式涉及整型,字符和实型,需要对类型进行转换
1.隐式自动转换
当运算类型不同时,系统会自动转换。char型,short int转换成int,float型转换成double型为必定转换。
???????
(有低精度,小范围直接转换为高精度,大范围)
2.强制转换
在使用%时,double型%int型,系统编译错误,所以可以在数字前转换int型(%两边必须为整数)
如double a=3.14
int b=2
c=a/b,(编译错误)
c=(int)/b
c=1

注意

  1. 强制转换后面要加(),否则只对相邻的转换。
  2. 会导致精度降低
  3. 强制转换是值得转换,不改变原来的值,只是产生一个新的值。

七.运算符和表达式

  1. 算术运算符
    +,-,*,/,%(求余),++(自增),–(自减)。

2.关系运算符
<,><,==,>=,<=和!=(不等于)。
3.逻辑运算符
&&,||,!。
4.赋值运算符
简单赋值(=),复合算数赋值(+=,-=,*=,/=,%=),复合位运算赋值(&=,|=,>>=,<<=)
5.条件运算符
“?:”,唯一的三目运算符

  • c=(a>b)?a:b;
    a是否大于b,若a大于b,则输出a,否则输出b
    a>b?a:b<c?b;c; 等于a>b?a:(b<c?b;c);

6.逗号运算符
就是逗号“,”
7.指针运算符
间接访问 “*” 和取地址“&”。
8.求字节数运算符
用于计算各数据类型所占的字节数 (sizeof)。
9.位操作运算符
用于二进制位运算,后面会详细介绍。
10.强制类型转换符
前面已经讲过,可以多看看。
11.成员运算符
([ ], 下标 . ,->),在后面的数组指针会予以详解。

1.基本算数运算符
(1)“/”,当除数与被除数都是整型,那么结果一定为整数(舍去小数部分),有一个为实型,结果为double型,当有负数,结果采取向0取整,例如:-8/7=-1,-5/2=-2。
(2)“%”,要求运算对象必须为整型,余数的符号与被除数的符号相同。
(3)运算符+ - * /都是两个数计算,叫作双目运算符,像求负(-),只有一个数叫单目运算符,
?:”是唯一的三目运算符
2.优先级和结合性
“++”,“–”(右结合)优先级高于“+,-,,/,%”。
3.自增自减运算符
++i,–i 在使用i之前,先使i加1或减1。
i++,i-- 使用i之后,使i加1或减1。
注意
1.无论是前缀还是后缀,若独立出现,都等价于i=i+1或i=i-1。
2.只能用于变量,不能用于常量或表达式。
3. -i++=-(i++),若i=5,则(i++)=5,i=6。-(i++)=-5,i=6(先用后加)。
4. 当遇见多个运算符,i+++j,可以理解为(i++)+j。
2.赋值预算符和赋值表达式
复合算术运算符:+=,-=,
=,/=,%=:
复合位运算赋值运算符:&=,|=,^=,>>=,<<=。(后面会详细介绍)
i+=5 等于 i=i+5
ij+5 等于 i=i(j+5)
i%=k 等于 i=i%k
3.关系运算符式和表达式
1.运算符
<,<=,>,>=的优先级相同,高于==,!=。
算术运算符>关系运算符>赋值运算符
4.逻辑运算符和逻辑表达式
1.逻辑运算符
与&&,或||,非!
优先级:

        !>&&>||
		!>算术运算符>关系运算符>&&>||>赋值运算符

2.逻辑表达式
<表达式><逻辑运算符><表达式>
例如:能被四整除,但不能被100整除
year%4==0&&year%100!=0
((year%4)==0)&&((year%100)!=0)
5.逗号运算符和表达式
逗号可以将两个表达式连接在一起。如::a+5,3+8"不是两个表达式而是一个。
逗号运算符优先级最低。
并不是所有的逗号都是运算符,在printf(“%d”,(a,b))中,第一个逗号作为分隔符,第二个逗号作为运算符。
八.其他运算符
“ &”与“*”
&单目运算符的功能为取地址运算,&变量名,运算对象只能能是变量
*双目运算符的功能为返回地址的变量

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值