C语言中操作符及表达式(入门级超详细)(上)

简介: C语言中操作符及表达式(入门级超详细)

   操作符贯穿我们C语言的各个部分,接下来我们进行各式各样的操作符的详细介绍以及各种表达式的求值,希望能帮助大家十分熟悉地使用操作符

操作符详细介绍:

      算术操作符+-*/%

       移位操作符<< >>

       位操作符 | & ^

       赋值操作符+= -= *= /= %= >>= <<= &= |= ^=

       单目操作符! & sizeof ~ *(解引用操作符)

       关系操作符> < >= <=

       逻辑操作符&& ||

       条件操作符

       逗号表达式,下标引用,函数调用还有结构成员操作符


一,算术操作符

       首先我们来讲C语言中有两个单目算术运算符即+ (正) -(负),还有五个双目运算符,双目运算符中,乘除取余运算符比加减运算符优先级更高。一讲双目算术操作符,就是最简单的 加减乘除 还有 取余。

       +         -         *         /         %

       (🔥注:这里都是双目操作符)

       🤔注意一下:这里我们只需要讲一下需要注意的算术操作符里的除号不能写成➗,而是   /   才对。

        📚如果用除法操作符,如果其中一个数字为浮点数,所求出的结果也为浮点数(默认保留六位小数点)

💬 代码演示:

如果我们想要少保留一些小数,在  %f  的  f  前加上【.(保留小数位)】。例如

这里 . 后是数字1,所以保留一位小数。


%    这是取余操作符,比如14余上10结果为4。

上代码深入理解

#include <stdio.h>
int main()
{
  int i = 15;
  printf("%d %d", i / 10, i % 10);
  return 0;
}

运行结果为 1和5,这是整型之间的算术操作,切记:取余运算的两个数都必须为整数。如果是浮点数他就会报错。

📑就像下边这样


二.移位操作符

(接下来所有的数都假设在32位机器下运算)

1,左移操作符

⭐移位规则:左边抛弃,右边补零。

2,右移操作符

⭐右移运算分为两种

1,逻辑移位

左边用零填充,右边丢弃

💡2.算术移位

左边用原该值的符号位填充

当然对于移位操作符,不要移动负数位,这个是标准未定义的


位操作符

以下这几个操作符都是双目操作符

&         //按位与

|         //按位或

^         //按位异或

注:他们的操作数必须是整数

就按照上述例子来讲,我们仔细分析以下结果是如何得出来的

首先我们来分析a的结果是如何求出的

按位与还有一个用途就是取特定位,就比如要求54的后四位,只需要将54与后四位都是1的数按位与,如果要求后五位,那就给后五位都是 1 的数按位与

54的二进制序列为

00000000000000000000000000110110和

00000000000000000000000000001111按位与

00000000000000000000000000000110结果就是如此。

后四位就取出来了,即为0110


接下来我们看b,按位或(|)

😊就像上面那样,按位或的作用就是可以把某些位变成 1 ,很简单滴,只需要按位或上这些位都是1的数就可以啦。


按位异或^

这里我们看结果是如何求出 c = 3的

上边介绍了按位异或(^)的功能就是使参与运算的两个数的二进制位相异时为 1 ,相同为 0 .

异或操作符(^)的主要用途就是能使 特定的位 翻转,例如我们要将127的后5位翻转,只需要将127与后五位都是1的数按位异或。

00000000000000000000000001111111与

00000000000000000000000000011111按位异或结果为

00000000000000000000000001100000

按位异或还可以在不用临时变量的情况下实现两个变量的互换

我们看代码

我们来看他是如何做到的


赋值操作符

在程序中常常遇到的 = 就是所谓的赋值操作符,赋值运算符的表达方式与人们的思维习惯很接近,所以学习起来也很简单。

这里值得我们注意的是,并不是所有表达式都可以作为左值,如常数只可以作为右值。

复合操作符

+=        -=        *=        /=        %=

>>=        <<=        &=        |=        ^=

具体效果是怎么样的呢?

只举一例,其中+=的效果

int main()
{
  int x = 10;
  x = x + 1;
  printf("%d\n", x);
  int y = 10;
  y += 1;
  printf("%d\n", y);
  return 0;
}

运行结果可以发现,两个数最终的值都为 11,他们两种表达方式的效果相同。很简单,其他的都可以类推


单目操作符

       逻辑反操作

-       负值

+       正值(几乎不用,可以省略)

&        取地址操作符

sizeof         操作数类型的长度(以字节为单位)没错,这个小伙也是操作符

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

--       分为前置--,和后置--

++       和--一样

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


逻辑反操作

通常使用单目操作符!把一个变量的数值转换为相应的逻辑真值或假值,也就是0和1.

比如

result = !num;

如果num非0,则result为零,如果num为零,则result为1.

负值正值就是正号负号

&取地址符号可以找到变量字符串函数之类的地址,在指针章节会用到

sizeof也是一个操作符,可以求出变量所占空间的大小,但是不能直接sizeof后直接加变量类型。(对的,sizeof也是一个操作符)

int main()
{
  int a = -10;
  int* p = NULL;
  printf("%d\n", !2);
  printf("%d\n", !0);
  a = -a;
  p = &a;
  printf("%d\n", sizeof(a));
  printf("%d\n", sizeof(int));
  printf("%d\n", sizeof a);
  //printf("%d\n", sizeof int);
  return 0;
}

sizeof和数组

我们看代码

       在x86环境下,因为传过去的是数组名,而sizeof后如果是数组名,那就代表的是整个数组,char类型占1个字节,int类型占4个字节,而数组里都是十个元素,所以结果是40和10,因为地址储存形式都是整型,所以后边两个结果都是4。

目录
相关文章
|
11月前
|
C语言
C语言中条件操作符的应用
最后,条件操作符是个超级英雄,但不是每个代码问题都需要一个超级英雄来解决。一定要在适当的时候适度的使用它,那么它将成为你的编程工具箱中的一件强力工具。
472 75
|
人工智能 Java 程序员
一文彻底搞定C语言的表达式和语句
本文介绍了C语言中的表达式和语句,涵盖算术、关系等表达式及各类语句的用法,帮助初学者理解核心概念。本文介绍C语言表达式(算术、关系等)和语句(表达式、复合、控制、函数、空语句),助你掌握核心概念。
948 0
一文彻底搞定C语言的表达式和语句
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
356 1
|
存储 网络协议 C语言
【C语言】位操作符详解 - 《开心消消乐》
位操作符用于在位级别上进行操作。C语言提供了一组位操作符,允许你直接操作整数类型的二进制表示。这些操作符可以有效地处理标志、掩码、位字段等低级编程任务。
680 8
|
C语言
【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
C语言中有三种主要的逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`)。这些运算符用于执行布尔逻辑运算。
1390 7
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
533 10
|
存储 编译器 C语言
【C语言】简单介绍进制和操作符
【C语言】简单介绍进制和操作符
484 1
|
存储 编译器 C语言
初识C语言5——操作符详解
初识C语言5——操作符详解
441 0
|
存储 数据处理 C语言
C语言实验二 数据类型、运算符和表达式
C语言实验二 数据类型、运算符和表达式
405 0
|
存储 人工智能 C语言
C语言第二章 数据类型,运算符和表达式总结【完美补充文字版】(超级详细)
C语言第二章 数据类型,运算符和表达式总结【完美补充文字版】(超级详细)
833 0
C语言第二章 数据类型,运算符和表达式总结【完美补充文字版】(超级详细)