The interesting contents of Operator



今天,我学习并掌握了非常有用的操作符。操作符分为:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符以及逗号表达式等。

首先,(1)算术操作符有:+ -  *  /  %.  1

  1. 除了%操作符外,其他的几个操作符可以用于整数和浮点数。

  2. 对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

  3. %操作符的两个操作数必须为整数。返回的是整除后的余数。

(2)移位操作符:<<左移操作符,>>右移操作符

左移操作符:左边抛弃,右边补0.虽然数被移位,但是在没被赋值的情况下,自身的值不会变。

右移操作符:1.逻辑移位:左边用0填充,右边丢弃。2.算术移位:左边用原该值的符号位填充,右边丢弃。

并且右移相当于给这个数除以2.

警告:对于移位运算符,不要移动负数位,这个是标准未定义的。例如:int num=10;num>>-1;//error

3)位操作符:&   //按位与    |  //按位或        ^    //按位异或

注:他们的操作数必须是整数。

经典例题:不加临时变量交换两个数的值。

#include<stdio.h>

#include<math.h>

#include<windows.h>

int main ()

{

int a=10;int b=15;

a=a^b;

b=a^b;

a=a^b;

printf("a=%d,b=%d\n",a,b);

system("pause");

return 0;

}

(4)赋值操作符:是一个很棒的操作符,它可以让你得到一个你以前不满意的值。也就是你可以给自己赋值。同时,赋值操作符也可以连续使用。

它还有复合赋值符:+=,-=,*=,/=,%=,>>=,<<=,&=,^=,|=等等。

比如:intx=10;x=x+10;x+=10;后两句意思是一样的。

5)单目操作符:!:逻辑反操作。-:负值。+:正值。&:取地址。Sizeof:操作数的类型长度(以字节为单位。)~:对一个数的二进制按位取反。--:前置、后置--++:前置、后置++*:间接访问操作符(解引用操作符)。(类型):强制类型转换。

Sizeof和数组例题:

#include<stdio.h>

#include<math.h>

#include<windows.h>

void test1(int arr[])

{

         printf("%d\n",sizeof(arr));

}

void test2(char ch[])

{

         printf("%d\n",sizeof(ch));

}

int main ()

{

         intarr[10]={0};

         charch[10]={0};

         printf("%d\n",sizeof(arr));

         printf("%d\n",sizeof(ch));

         test1(arr);

         test2(ch);

         system("pause");

         return0;

}

由此看出数组在进行函数传参时,会发生降维问题,一维数组会降为一级指针。

6)关系操作符:>, <,  ==,   !=,  >=, <=.

陷阱:x=get_value();

if(x=5)

这里看似x等于5就执行事务处理,实际上代码不是这个意思。我们将==搞成了=,这样这个事务无论什么情况都会执行。

警告:在编程过程中===不要写错。

7)逻辑操作符:&&:逻辑与。||:逻辑或。

区分逻辑与和按位与,区分逻辑或和按位或

1&2=0

1&&2=1

1|2=3

1||2=1

例题:

#include<stdio.h>

#include<math.h>

#include<windows.h>

int main ()

{

         inti=0,a=0,b=2,c=3,d=4;

         i=a++&&++b&&d++;

         printf("a=%d\nb=%d\n c=%d\n d=%d\n",a,b,c,d);

         system("pause");

         return0;

}

(8)条件操作符:exp1?exp2:exp3

练习:

If(a>5)

B=3;

Else

B=-3;

a>5?3:-3;

9)逗号表达式:exp1,exp2,exp3,…expN

逗号表达式:就是用逗号隔开的多个表达式。

从左到右依次执行,整个表达式的结果是最后一个表达式的结果。

猜你喜欢

转载自blog.csdn.net/ymk1507050118/article/details/79832328