14.【C语言】初识操作符 上

1.分类

01算术操作符

+ - * / %

操作数1+操作数2   操作数1-操作数2   操作数1*操作数2   操作数1/操作数2   操作数1%操作数2

即四则运算和%

注意:

/介绍

#define  _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main()
{
	float a = 9 / 2;
	printf("%f\n", a);
    printf("%f\n", 9 / 2.0);
}

结果不同

9/2=4……1(相当于直接去除小数部分打印整数部分)

9/2.0=4.5(2.0告诉计算机保留小数)

%f和%lf默认情况下打印小数点后六位

总结:

除号的两端如果是整数,执行的是整数除法,得到的结果也是整数

如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法

%介绍

%取模=取余数   9%2=1 

注意:%只能用于整数,负数求模的结果的正负号由第一个运算数的正负号决定

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	printf("%d\n", -5 % 4);
	printf("%d", 5 % -4);
	return 0;
}

结果:

02移位操作符

>> <<

<<是左移二进制位

>>是右移二进制位

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

注意:a<<1,a左移1位,但a的值没有变;a<<=1,a左移1位,a的值变了

原因:

 

1010-->10100(默认补0)

注意:C语言的移位是逻辑移位还是算术移位取决于编译器,但大部分编译器(如VS 2022 )选择算术移位

有关移位的分类讲解见《计算机科学导论 第三版》第53~54页

警告:1.禁止移动负数位 2.禁止移动的位数超过最大位数

a>>-3(错误);a<<100(若最大位数是32位,100>32,错误)

有关sizeof函数的介绍在3.【C语言】内置数据类型

同理>>反过来

03位操作符(& ^ | ~是补码运算,且必须操作的是整数)

位:二进制位

复习:《计算机科学导论 第三版 》第49~53页

是位对之间的运算

&按位与(AND运算)

x==0或1,x AND 0-->0 和 0 AND x-->0

^按位异或(XOR运算即半加运算)

x==0或1 x XOR 1-->NOT x 和 1 XOR x-->NOT x

按位或(OR运算)

x==0或1 x OR 1-->1 和 1 OR x-->1

04赋值操作符

  连续赋值(从右向左依次赋值):a=b=c+1

  复合赋值:a+=3;(自增)b-=5;(自减)

                 a=a+b简写为a+=b

                 a=a-b简写为a-=b

                 a=a%b简写为a%=b

                 a=a*b简写为a*=b

                ……以此类推

04单目操作符

有单就有双

a+b;

+有两个操作数,+是双目操作符

所以单目操作符只有一个操作数

介绍:

!逻辑取反

0表示假,非0表示真

!a  如果a是假,!a为真;如果a为真,!a为假

#define  _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main()
{
    int a =0;
    printf("%d\n", !a);
}

结果默认输出1

!a常用于if语句的使用

#define  _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main()
{
    int a=0; 
    scanf("%d", &a);
    if (!a)
        printf("A");
    else
        printf("B");
    return 0;
}

-负值

-2

+正值

+3 

sizeof 计算数量类型或变量的大小

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值