您身边的App定制专业企业--10年开发经验为您护航

18678812288
0531-88887250

C语言算术、赋值、关系、逻辑运算详细剖析

文章编辑:2138com太阳集团 时间:2016年12月20日

标识符和关键字

¨标识符:用来标识程序中的变量、符号常量、函数、数组、类型、文件等对象             的名字。标识符只能由字母、数字和下划线组成,且第一个字符必需为字母或下划线。C语言中大小写字母是两个不同的字符。

¨关键字:标识符的一个特殊的集合。其中的标识符在C语言中有预先定义好的特殊意义。不能用于其他任何目的。

¨C语言的关键字共32个:

   auto break case char const continue defaultdo

   double else enum extern float for goto if

      int long register return short signed sizeof static

   struct switch typedef union unsigned voidvolatile while

 

运算符、表达式和计算

C的运算符主要分为四大类:

算术运算符(+加 -减 ×乘 /除  %取余  ++自增1 --自减1)

关系运算符(>大于  <小于  ==等于  >=大于或等于  <=小于或等于  !=不等于)

逻辑运算符(!逻辑非 &&逻辑与  ||逻辑或 )

位运算符  (<<按位左移 >>按位右移 ~按位取反  |按位或?按位异或 &按位与 )

特殊运算符 : 赋值运算符(=)、条件运算符(? :)

              逗号运算符(,)、指针运算符(* &)、

              求字节运算符(sizeof)、

              强制类型转换运算符((类型))、

              分量运算符(. ->)、下标运算符([ ])、函数调用(( ))等。

赋值运算符与赋值表达式

 

一、剖析10种复合赋值运算符:
 

 +=、 -=、 *=、 /=、 %=、 <<=、 >>=、&=、 ^=、 |=

例x+=1等价于x=x+1

自增运算符前置和后置的区别

作为表达式时:,++前置时,自增表达式(++n)的值等于其操作数自增后的值;++ 后置时,自增表达式( n++)的值等于其操作数自增前的值

实例1:自增运算符前置和后置

//自增运算

 //前置自增和后置自增的区别

 int X,Y,Z;

 X=5;

 Y=X++ +5;

 printf("x++自增运算结果:%d\n",Y);

 printf("x结果1:%d\n",X);

 Z=++X +5;

 printf("x结果2:%d\n",X);

 printf("++x自增运算结构:%d\n",Z);

 return 0;

运行结果如下:

 

 

二、逗号运算符及其表达式
 

C语言中,逗号“,”的用法有两种:一种是用作分隔符,另一种是用作运算符。逗号表达式 

形式:表达式1,表达式2,表达式3,...,表达式n 

a=2*6,a-4,a+15; 

当逗号作为运算符使用时是一个双目运算符,其运算优先级是所有运算符中最低的。逗号运算符的运算顺序是自左向右的,请注意,后面两个表达式的值仅作了计算,而并没有赋给a,所以a的值仍然为12。 

逗号表达式求值过程:分别求逗号表达式每一项的值,并以最后一个表达式n的值作为整个逗号表达式的值。 

实例2:逗号表达式

 inta;

 a=3*5,a*4,a+5;

 printf("a值为:%d\n",a);

 return 0;

编译、链接、实行后的结果:

实例3:逗号表达式

 int a=2,b=4,c=6,x,y;

 y=3*5,y=((x=a+b),y=0,y=(b+c));

 printf("y=%d,x=%d\n",y,x);

 return 0;

编译、链接、实行后的结果:

 

三、剖析位运算符
 

实例4:用C语言写一个程序:输入两个十进制数,并输出它们按位或的结果

//位运算

 //位或运算---1

 int a,b,c;

 printf("请输入两个数:");

 scanf("%d %d",&a,&b);

 c=a|b;

 printf("a=%d\n b=%d\n 它们按位或的结果为:c=%d\n",a,b,c);

 

 Output:

 请输入两个数:3 5

 a=3

 b=5

 它们按位或的结果为:c=7

 

 //位异运算---2

 int a,b,c;

 printf("请输入两个数:");

 scanf("%d %d",&a,&b);

 c=a^b;

 printf("a=%d\nb=%d\n它们按位或的结果为:c=%d\n",a,b,c);

 

 Output:

 请输入两个数:1 7

 a=1

 b=7

 它们按位或的结果为:c=6

分析程序:所谓位运算是指进行二进制的运算。3化为二进制数为0011,5化为二进制数为0101,按照按位或运算规则:1|1=1、1|0=1、0|1=1、0|0=0,按照按位异运算规则:1^1=0、1^0=1、0^1=1、0^0=0它们按位或的结果为0111,化为十进制数,便为7

 

四、条件(三元)运算符 (? :)
 

test ?expression1 : expression2

参数

test

任何 Boolean 表达式。

expression1

test 为 true时返回的表达式。可能是逗点表达式。

expression2

test 为 false 时返回的表达式。可能是逗点表达式。

?  : 运算符可以用作 if...else语句的快捷方式。它通常用作较大表达式(使用 if...else 语句会很繁琐)的一部分。例如:

 

 

var now = new Date();

var greeting = "Good" + ((now.getHours() >17) ? " evening." : " day.");

在此例中,如果晚于下午 6 时,则创建一个包含 "Good evening." 的字符串。使用 if...else语句的等效代码如下:

var now = new Date();

var greeting = "Good";

if (now.getHours() > 17)

   greeting +=" evening.";

else

   greeting += " day.";


想要了解更多详情欢迎来电咨询18678812288
登陆网址:www.jnydkj.cn。
联系人:王经理。

XML 地图 | Sitemap 地图