计算机学习DAY 10-C-操作符

发布于:2023-01-18 ⋅ 阅读:(580) ⋅ 点赞:(0)

本节思维导图如下:

一、运算操作符:+-*/%

加减不做赘述主要介绍一下除法(/)和模(%)计算

1.除法

代码如下:

#include <stdio.h>

int main()	//主函数

{

	float a = 9 / 2;	//都是整数将进行整数运算

	printf("%d", a);	//打印a

	return 0;

}

没错,我们入轨直接计算9/2,得到的结果将是4,就算将类型改为浮点型,得到的结果是4.00000,依然是4 ,这是因为运算符一端是整数时,那么就执行整数运算,但是我们做如下更改:

#include <stdio.h>

int main()	//主函数

{

	float a = 9 / 2.0;	//除号一端是小数才计算出小数

	printf("%f", a);	//打印a

	return 0;

}

本次输出就是正常的4.5啦,OK,next one!~

二、位移操作符<<       >>

代码如下:

#include <stdio.h>

int main()

{

	int a = 2;

	int b = a << 1;

	//左移操作符,移动的是二进制位

	printf("%d", b);

	return 0;

}

移动的是二进制位,向左移动后再补位0得到的就是就是4。

三、位操作符&、^、|(略,以后会详细学习,赋值符&在scanf函数用到过)

四、赋值操作符=、+=、*=、&=、^=、<<=、>>=、|=(略,以后或详细学习)

五、单目操作符:只有一个操作数/双目即是两个操作数

1、!逻辑取反    //C语言中0为假,非0为真

代码如下:

#include <stdio.h>

int main()

{
	if (a)
	{
		//如果a为真,做什么
	}

	if (!a)
	{
		//如果a为假,做什么
	}

	return 0;
}

2.-负值

3.+正值

4.&取地址

5.sizeof计算长度,这是操作符不是函数

6.~二进制按位取反

代码如下:

#include <stdio.h>

int main()

{

	int a = 0;

		printf("%d\n", ~a);
		//二进制取反标识

	return 0;

}

打印结果为-1,按二进制位是所有的二进制位,即是将所以0更换为1,32个0才是0,将所有bit位全变,就成为了32个1,也就是-1

补充:整数二进制存储方法(负整数)负整数在内存中是补码存储

原码
-1:100000000000000000000000000000001
    反码
-1:11111111111111111111111111111110
    补码
-1:11111111111111111111111111111111

而正整数存储时用什么码无所谓,因为正整数原码,反码,补码相同

7.(类型)强制类型转换

8.--前置,后置

9.++前置,后置

代码如下:

#include <stdio.h>

int main()

{
	int a = 10;
	int b = ++a;
	
	printf("%d\n%d\n",b,a);

	return 0;
}

++前置,所以是先加再使用,所以输出是11 11

还有一种是考试题目,但是本质上是错的,没有人会这么写,因为不同编译器跑出来可能不一样,代码如下:

#include <stdio.h>

int main()

{

	int a = 1;
	int b = (++a) + (++a) + (++a);

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

	return 0;
}

vs2022pro版本结果是12,其他版本未测试

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

六、关系操作符<  <=  >=  >  !=  ==

七、逻辑操作符

&&逻辑与
||逻辑或

代码如下:

#include <stdio.h>

int main(void)

{
	int a = 0;
	int b = 1;

	int c = a && b;	//逻辑与
	int d = a || b;	//逻辑或

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

	return 0;
}

可以看到输出为 0 1,&&是一假便假,而||是一真便真

八、三目操作符

代码如下:

#include <stdio.h>

int main(void)

{
	int a = 1;
	int b = 3;
	int max1 = 0;
	int max2 = 0;

	if (a > b)
	{
		max1 = a;
	}
	else
	{
		max1 = b;
	}
	max2 = a > b ? a : b;

	printf("max1=%d\nmax2=%d\n", max1, max2);

	return 0;
}

输出为3 3,说明了三目操作符的替代作用

九、逗号表达式

代码如下:

#include <stdio.h>

int main()

{

    int a=0;
    int b=3;
    int c=5;
    int d (a=b+2,c=a-4,b=c+2);
    printf("%d",d);
    return 0;
}

打印d,从左向右计算,计算结果是最后一个表达式的结果,所以是3

十、下标引用操作符,函数调用和结构成员[] () . ->

#include <stdio.h>

int main()

{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

	printf("%d", arr[5]);

	return 0;
}

printf ("%d\n",arr[5])//这一行用到的【】就是下标引用符

printf()//这里用到函数之后的()就是函数调用操作符

相关代码我会同步上传至码云,欢迎交流与学习:C语言学习之路: C语言学习当中做的相关代码 - Gitee.com

本文含有隐藏内容,请 开通VIP 后查看