栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

十二、0基础都能看懂(会打字就会C)--C语言基础--操作符(2)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

十二、0基础都能看懂(会打字就会C)--C语言基础--操作符(2)

赋值操作符

我们常见的操作符有:

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

 

上面的就是我们常见的赋值操作符,我们使用方法就是:

a=a+3就是a+=3

a=a%3就是a%=3

a=a^b就是a^=b

单目操作符

单目操作符:顾名思义就是对一个目标的操作符。我们常见的+-*/都是双目操作符,它是有两个目标的。我们常见的单目操作符有!、+、-、&、sizeof、~、++、--等

!表示的是非的意思。

#include
int main()
{
	int a = 100;
	printf("%dn", !a);
		return 0;
}

在我们计算机里面我们一般默认1为真,0为假,假如当我们输入的时候,非0的均为真值,我们通过上面的代码我们知道,我们输入的a为100,为真值,那么!a就是假值,我们计算机默认的假值为0,所以我们输出的就是0.

+、-使用在我们的赋值,代表数字的正负。

#include
int main()
{
	int a = 10;
	int b = -a;
	int c = +a;
	printf("%dn", b);
	printf("%dn", c);
		return 0;
}

我们知道b=-10,c=10.

&我们在scanf函数的后面使用过,它代表取后面数字的位置。

#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
	int a;
	int b;
	scanf(" %d %d", &a, &b);
	int sum = a + b;
	printf("%dn", sum);
	return 0;
	
}

上面,我们scanf函数使用&a、&b,后面我们输入的两个数字就与前面a和b关联在了一起。

sizeof:一个求数据长度的一个操作符,而不是函数。

#include
int main()
{
	int a;
	printf("%dn", sizeof(a));
	return 0;
	
}

我们知道int的是4个字节,所以我们输出的就是4

#include
int main()
{
	int arr[10] = { 1,2,2,3 };
	printf("%dn", sizeof(arr)/sizeof(arr[1]));
	return 0;
	
}

我们输出的数是数组长度除以数组中间一个元素的长度,因为我们元素长度都相同,所以我们输出的是元素的个数,我们阅读上面的代码我们知道有10个元素,所以我们输出的就是10。

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

我们~就是表示将原来数字里面的1变成0、0变成1.

#include
int main()
{
	int a = 0;
	printf("%dn", ~a);
	return 0;
}

我们的结果为-1.

我们知道int a=0在二进制里面表示为:

00000000,00000000,00000000,00000000

那么~a就是:

11111111,11111111,11111111,11111111

但是这个二进制为什么是-1呢?

在计算机里面我们二进制数字数的储存方法有3种:原码、反码、补码。

我们在内存里面一般存储的就是补码,我们打印出来的一般是原码,正整数的原码、反码、补码都是相同的,都是负数符合下面的计算规则:

我们int有32个比特位,我们第一位是符号位(1代表为负数,0代表为正数),所以-1的原码就是:

10000000,00000000,00000000,00000001

我们反码就是符号位不变,其它全部取反,所以我们的反码就是:

11111111,11111111,11111111,11111110

补码就是将二进制序列加1就可以了,所以我们补码就是:

11111111,11111111,11111111,11111111

所以这个就是我们内存里面的数字,也就是-1.

++与-- (自增和自减)

#include
int main()
{
	int a = 5;
	int b = a++;
	printf("%dn", a);
	printf("%dn", b);

	return 0;
}

后置++int b=a++表示的是先b=a,然后a=a+1。所以上面我们程序运行的结果为6、5。

#include
int main()
{
	int a = 5;
	int b = ++a;
	printf("%dn", a);
	printf("%dn", b);

	return 0;
}

前置++int b=++a表示的是先a=a+1,然后b=a。所以上面程序的结果就是5、6,自减和自加的原理也是一样的。

关系操作符

我们C语言有判读两个数大小关系的语句:

>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于

逻辑操作符

&&与
||或
#include
int main()
{
	int a = 3;
	int b = 4;
	int c = a && b;
	printf("%dn", c);

	return 0;
}

上面这段代码,我们知道当我们输入是非0的都是真,所以a/b均为真,所以a并b也是真,所以相同默认输出为真,所以输出0。

#include
int main()
{
	int a = 3;
	int b = 0;
	int c = a || b;
	printf("%dn", c);

	return 0;
}

上面这行代码,输入b为假,都是我们是a或者b,我们a为真,所以我们输出就是真,系统默认就是输出为1。

条件操作符(三目操作符)

exp1?exp2:exp2

上面这个语句代表的意思是:看exp1这个语句是否正确,假如exp1是真,那么我们就按exp2来进行计算,假如exp1为假,那么我们就按exp3来计算。

#include
int main()
{
	int a = 3;
	int b = 4;
	int max=a > b ? a : b;
	printf("最大值是%dn", max);
	return 0;
}

我们就可以通过上面这行代码来代替原本的if else判断:

#include
int main()
{
	int a = 3;
	int b = 4;
	int max;
	if (a > b)
		 max = a;
	else
	     max = b;
	printf("最大值是%dn", max);
	return 0;
}

逗号表达式

假如我们遇见了一行逗号表达式:exp1,exp2,exp3,我们按前后顺序计算并同时更新前面计算的数据就可以了。

#include
int main()
{
	int a = 3;
	int b = 4;
	int c = 5;
int d = 100;
int f = (c = a + b, d = c + a, f = c + d);
printf("%dn", f);
return 0;
}

我们按照上面的顺序计算就可以了,c=3+4=7,d=7+3=10,f=7+10=17,所以我们的结果就是17。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029272.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号