C语言碎碎念03基本运算符(连载)

运算符

在这里插入图片描述
运算符的优先级

在说运算符的时候必须知道运算符对象,就是这个运算符有几个对象。

1+1//那么这个+号有两个运算对象
i++//这个++运算符只有一个运算对象
a>b?a:b;//三目运算符,?:这个整体是一个运算符,所以有三个对象

算数运算符:

a+b //加
a-b //减
a*b //乘
a/b //除
a%b //取余
a+=b; a=a+b
a-=b; a=a-b
a*=b; a=a*b
a/=b; a=a/b

虽然都是很简单的运算符,但是我还是想碎碎念一下,我自己刚开始学,经常错的地方
1.printf(“%d\n”,5/2),这个是两个整数相除,结果也会是整数,输出的结果为:2

2.printf(“%lf\n”,5/2.0),整数除一个浮点数,输出的结果是浮点数,这是自动转换。
这里还需要强调一下,如果一个数为3.0,那么这个数的类型为double(双精度浮点型),想要定义为float(单精度)的话,写的时候应该显式的加上f,3.0f。所以结果为:2.500000

3.printf("%d\n",3%5),取余中,一般判断某个数能否被整除。这里结果为:3.
还有一个比较常用的:随机数

//比如我们想随机一个60~100的数
#include<stdlib.h>
#include<time.h>
void test02()
{
    //设置随机数种子
    srand(time(NULL));

    //rand()产生随机数
    printf("%d\n", rand()%41+60);
}

这里可以看出%取余,rand()%41产生的范围为0~40,要注意,别整迷糊了。
再写一个随机的字母

#include<stdlib.h>
#include<time.h>
void test02()
{
    //设置随机数种子
    srand(time(NULL));

    //rand()产生随机数
    printf("%c\n", rand()%26+'a');
}

如果想随机出大写的字母,那就将字符a,变为A。有点偏题了,说回来。

4.+=,-+,*=,/=

这个就很简单了

a+=b; a=a+b
a-=b; a=a-b
a*=b; a=a*b
a/=b; a=a/b

看一个典型的例题

int a = 12;
a += a-= a*=a;
printf("a = %d\n", a);

输出的是什么呢?
首先这个表达式的计算是从右到左计算,下面我们分布计算:

a += a -= a *= a;
a += a -= a = a*a;--->a += a -=144 ;
a += a =a-a;//此时的a为144----->a += 0
a=a+0;//此时a为0

一个看似复杂的表达式,从右往左,一步一步解开来,并不复杂,这个a的值一直在更迭,需要注意,而不是全部化简,之后再带入a的值,计算机是一步一步进行计算的。

5.关系运算符>,<,==,>=,<=,!=
这里需要强调的就是 : = =和=

a == 10 表示 a是否和10相等
a = 10 表示  将10赋值给a

常用的是判断一个值是否在某个区间中

int data = 0;
printf("%d",&data);
scanf("%d",data);
if(data >= 0 && data <= 10)
{
	printf("%d在0~10之间\n");
}

6.逻辑运算符&& ,||,!
这是有“短路特性”的运算符。什么是短路特性呢,下面我举例子来说明:

void test()
{
	(3>5) && printf("周继小机灵鬼\n");
}

在这里,因为(3>5)是假,所以根据&&的特性“全真为真,一假为假”,所以编译器就不会去检测第二个运算对象是否为真,因为它已经判定这整个表达式为假,所以后面那句话也不会输出。

void test()
{
	(30>5) || printf("周继小机灵鬼\n");
}

那么这一个 ||运算符的特性“全假为假,一真为真”,眼看,第一个运算对象为真,那么后面编译器就不去判断了,这个表达式为真!
逻辑非!,这个就很简单了
!真 == 假
!假 == 真

注意点:在c语言中,除了0都是真!!!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值