今天我们主要讲一下操作符(因为是初识,我们今天只浅浅的讲一下它的基本用法)

  • 操作符的类型

1、算术操作符

   + -   *  /    %

注意:/的意思为整除(5/2==4)

        %的意思为取模即求余(5/2==1)

2、移位操作符

   >>   <<

那么这个奇怪的符号是什么意思呢?

#include<stdio.h>
int main()
{
int a=1, b;
b=a<<1;
printf("%d\n",b);

return 0;
}

运行结果为2

0

0

0

0

0

1

这便是初始a=1,a<<1即a向左移动一个二进制位,故变为2(右移意思相同)

3、位操作符

& (按位与)

^   (按位异或)

|    (按位或)

我们通过几个程序来说明

#include<stdio.h>
int main()
{
int a=3;
int b=5;
int z=0;
z=a&b;
printf("%d\n",z);\\运行结果为1

return 0;

}

3和5在二进制中的表示,以及a&b之后的结果

0

1

1

1

0

1

0

0

 1

  若在二进制中0表示假,1表示真。从上往下(0和1为0,0和0也为0,1和1才为1)

|(按位或)操作符

【1】【0】【1】

【1】【1】【0】

【1】【1】【1】       ( 经过|之后)变为7,也即只要1存在即变为1(通俗来说)

^(按位异或)

【1】【0】【1】

【1】【1】【0】

【0】【1】【1】

#include<stdio.h>
int main()
{
int a=5;
int b=3;
int z=0;
z=a^b;
printf("%d\n",z);

return 0;
}

输出结果为3,也即是1和0同时存在是为1,只有0或者只有1即为0

4、赋值操作符

=  +=   -=  /=  &=  ^=  |=  >>=  <<=

一个算数操作符和一个=是什么意思嘞

初识c语言第三部分_#include


#include<stdio.h>
int main()
{
int a=0;
a+=1;\\相当于a=a+1
printf("%d\n",a);



return 0;
}

其它符号的意思与其类似,可类比思考。

5、单目操作符

!   逻辑反操作 

&    取地址

sizeof  操作数的类型长度

~   对一个数的二进制按位取反

--     前置、后置--

++    前置、后置++

   *  间接访问操作符(解引用操作符)  

  -  负值

  +  正值 

为什么叫做单目操作符?

因为这些操作符可以与一个字符联用。


由于我们是初识c语言所以我们只先挑几个重要的进行讲解。

首先!

#include<stdio.h>
int main()
{
int a=-2;

printf("%d\n",a);
printf("%d\n",!a);
return 0;
}\\

前面我们提到过在c语言中0为假,非0为真。

”!“这个符号的意思为 非真为假,非假为真。

再说一下sizeof(测定操作数的类型长度)

#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d\n",sizeof(int));\\若把int换为arr即可测量整个数组的字节数,

return 0;
}\\这个测定的是int这个整型所占的字节数,不是整个数组。
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10, };
printf("%d\n", sizeof(arr));

return 0;
}//测定的是整个数组的字节数

一个整型数字(整型)的所占的字节数为4

sizeof使用时的注意

printf(”%d\n",sizeof(a));
printf(“%d\n",sizeof(int));
printf(”%d\n",sizeof a )
printf(“%d\n",sizeof int );//这个语句是错误的,测定类型时一定要用()

接下来到~(按位取反)了,神马意思呢?

让我们先说一下数字在计算机中是如何存出的呢?

数字在计算机中都是以补码的形式储存的那么补码是如何形成的呢?

我们以数字二为例

原码:00000000000000000000000000000010

反码:11111111111111111111111111111101

补码:11111111111111111111111111111110

反码就是原码中的1变0,0变1,补码就是反码加1(符号位是一直不变的)

若数字是一个有符号的数如-1,则第一位为符号位(用红色标注),0代表正;1代表负

原码:1000000000000000000000000000001

反码:1111111111111111111111111111110

补码:1111111111111111111111111111111

计算为-2^32+2^32-1=-1

按位取反后也即是一个数字的补码按位取反(符号位也取,)得到的新的代码即是输出的东西。

#include<stdio.h>
int main()
{
int a=2;
int b = ~a;
printf("%d\n", b);

return 0;
}//输出结果为-3

再接下来就是++,--我们只取其中一个举例

前置++即先加1后使用,后置++即现使用后加加(--相同)

#include<stdio.h>
int main()
{
int a = 9;
int b = a++;
int c = ++a;
printf("%d,%d\n", b, c);
return 0;
}
//输出结果为9,11

*我们暂时先不讲,正值,负值更不用多说。

6、逻辑操作符

&&          逻辑与(两个条件都满足)

||              逻辑或(两个条件满足其中一个即可)

我们通过程序来说明

#include<stdio.h>
int main()
{
int a = 3;
int b = 0;
int c = a && b;
printf("%d\n", c);


return 0;
}

输出结果为0,这个是&&的例子下面来看一下||的例子

#include<stdio.h>
int main()
{
int a = 3;
int b = 0;
int c = a || b;
printf("%d\n", c);


return 0;
}

输出结果为1只要有一个为真即为真。

7、条件操作符

exp1?exp2: exp3(如果满足exp1则输出exp2否则输出exp3

#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
int max = 0;
max=(a > b ? a : b);

printf("%d\n", max);

return 0;
}

8、下标引用,函数调用操作符

我们用代码的一部分来说明

int arr[10]={0};//[]为下标引用操作符。
int sum=Add(a,b);//()即为函数调用操作符。