C专栏5-常/变量/表达式

/*************************************************

function:c language Technology
author  :chinayaosir   QQ:44633197 
blog    :http://blog.csdn.net/chinayaosir
note    :禁止其它网站转载此文章

**************************************************/

C常量,变量,表达式

3.常量
常量定义方法
#define <常量名> <常量值>
#define  PI 3.1415926

3.1数字常量
.整型数常量
 8进制常量,在数字前面加0,如017,025,03654
10进制常量,直接给出数字,如19,3484,5343
16进制常量,在数字前面加0x或者0X,如0x17,0X25,0XFF

3.2浮点数常量
格式:[整数部分].[小数部分]e[指数部分]
如:12.34e5,1.234e3,1.1e-4

3.3字符常量
就是直接在字符上添加'',如'a','C','D'

3.4常用的字符转义常量
义符号 含义
/n 换行
/v 回车
/t 水平制表
/b 退格
/f 换页
/' 单引号
// /
/0 NULL空字符

4.变量
变量是在程序运行过程可以改变的量,每个变量在内存中有存储空间和存放值
变量声明格式是:<数据类型> <变量名清单元>;
4.1整型变量
如int sum,count,i;
4.2实数变量
float price,fob;
double G.W,N.W;

4.3字符变量
char word0;
char word1='a';
char word2=word1+1;

4.4指针变量
指针变量实际保存的是内存地址或者是空值

.指针变量定义格式:数据类型 * 指针变量名
数据类型包括基本数据,结构,数组
int *pi;

.指针变量取变量数据
指针变量从变量得到内存地址
指针变量=&变量
int sum=100;
int *pi;
pi=&sum;//pi得到sum变量的内存地址

.变量取指针变量数据
变量=*指针变量
int sum=100;
int other=111;
int *pi;
pi=&sum;//pi得到sum变量的内存地址
other=other + (*pi);//结果other=211

 

1.2变量及类型2
.变量类型:char,int,float,double;
.类型简化:typedef
定义 typedef datatypelist  typename,使用typename varname
代码: typedef signed int sint;  sint age;
.类型标识符:unsigned(无符号),signed(有符号),longt(长),short(短),register(寄存器)
.变量长度:char(1Byte),int(2Byte),float(4Byte),double(8Byte)
.变量定义:datatype varname;  代码:int age,weight,height;
.变量赋值1变量又定义:datatype varname=value;  代码:int age=20;
.变量赋值2: 定义datatype varname;赋值varname=value;  

代码: int age;  age=20;
.进制数值表示  10进制:不变,8进制:加0,16进制:加0x/0X  代码:int octal_v=022; int hex_v=0xff; int dec_v=123;  

.转义符号(/a /b /f /n /r /t /v // /' /" /? /nnn /xnnn)
说明: /a=bell,/b=退格,/f=走纸换行,/n=换行,/r软回车,/t=Tab跳格,/v=竖跳格,,,,/?=?,/nnn=8进制

***

.TRUE与FALSE (任何非0值都是TRUE,0是FALSE)
.如何判断某变量值是否等于小数0.66?
if (gp==0.66)   statement;  这样永远为真,是错误的,必须改写成减去多少之后再绝对化,再求小数点精度
if (fabs(gp - 0.66)<=0.001) statement;//这样是OK的

 

3.C运算符,表达

 1.C语言的运算符
1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。

2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。

3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。

4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

6.条件运算符
这是一个三目运算符,用于条件求值(?:)。

7.逗号运算符
用于把若干表达式组合成一个表达式(,)。

8.指针运算符
用于取内容(*)和取地址(&)二种运算。

9.求字节数运算符
用于计算数据类型所占的字节数(sizeof)。

10.特殊运算符
有括号(),下标[],成员(→,.)等几种。
-------------------------------------------------------

.运算符优先级(1为最高级)
1.()括号 []数组下标  .成员连接符 ->指针连接符
2.++(自增) --(自减) +(正号) –(负号) *(取值) &(取地址) ~(求反) (type)(类型转换) sizeof(大小)
前缀++,--代码 :++cnt和--cnt是对变量cnt先增1或者减1,再引用cnt变量
后缀++,--代码 :cnt++和cnt--是对变量先引用后,再增或者减1
类型转换 :int a=10; float b=12.5; a=(int)(b*3);//把float强制转换成int
3.算术乘,除,取模(*,/,%) 代码:a=10*3; b=10/3; c=10%3;
4.算术加减(+,-)  代码:d=10+3; e=10-3;
5.位移操作(>>,<<) 代码:a>>2;  b<<1;//_rotl(变量,位)与>>,_rotr(变量,位)与<<功能相当
6.相等判断(==,!=)
7.单操作数的逻辑运算与,或,异或(&,|,^)
8.双操作数的逻辑运算(&&,||)
9.条件运算(?:)(c)?true code:false code;
代码:grade=(score>=60)?'P':'F';
10.复合赋值运算符(=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=)
11.逗号运算符,主要起分隔作用
-------------------------------------------------------

2.C语言中结合性
而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理。
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。
.自左至右的结合方向就称为“左结合性”。
例如算术运算符的结合性是自左至右,即先左后右。
如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算

.自右至左的结合方向称为“右结合性”。
最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。

.算术运算符和算术表达式基本的算术运算符
1.加法运算符“+”加法运算符为双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有右结合性。
2.减法运算符“-”减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。
3.乘法运算符“*”双目运算,具有左结合性。
4.除法运算符“/”双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。
.双目运算具有左结合性。
参与运算量均为整型时, 结果也为整型,舍去小数。
如果运算量中有一个是实型,则结果为双精度实型。 printf("/n/n%d,%d/n",20/7,-20/7);
5.求余运算符(模运算符)“%”双目运算,具有左结合性。要求参与运算的量均为整型。
求余运算的结果等于两数相除后的余数。
.自增1,自减1运算符
自增1运算符记为“++”,其功能是使变量的值自增1。
自减1运算符记为“--”,其功能是使变量值自减1。
自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式:
++i i自增1后再参与其它运算。
--i i自减1后再参与其它运算。
i++ i参与运算后,i的值再自增1。
i-- i参与运算后,i的值再自减1。

.算术表达式
是由算术运算符和括号连接起来的式子, 以下是算术表达式的例子:
a+b  (a*2)/c (x+r)*8-(a+b)/7  ++i sin(x)+sin(y)  (++i)-(j++)+(k--)
.赋值运算符和赋值表达式
简单赋值运算符和表达式,简单赋值运算符记为“=”。
由“= ”连接的式子称为赋值表达式。其一般形式为: 变量=表达式 例如:
x=a+b
w=sin(a)+sin(b)
y=i+++--j 赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。

.如果赋值运算符两边的数据类型不相同, 系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。
具体规定如下:
1.实型赋予整型,舍去小数部分。
2.整型赋予实型,数值不变,但将以浮点形式存放, 即增加小数部分(小数部分的值为0)。
3.字符型赋予整型,由于字符型为一个字节, 而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。
4.整型赋予字符型,只把低八位赋予字符量。

.复合赋值符及表达式
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。
构成复合赋值表达式的一般形式为: 变量 双目运算符=表达式 它等效于 变量=变量 运算符 表达式
例如: a+=5 等价于a=a+5  x*=y+7 等价于x=x*(y+7)  r%=p 等价于r=r%p 复合赋值符这种写法,
对初学者可能不习惯, 但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。

.逗号运算符和逗号表达式在
逗号运算符C语言中逗号“,”也是一种运算符,称为逗号运算符。
其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
其一般形式为: 表达式1,表达式2 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值