C语言运算符和表达式

简介: C语言运算符和表达式

前言

本篇文章将带大家学习C语言运算符和表达式,运算符和表达式在C语言中是非常重要的一部分,希望大家能够重视这一部分的内容。


一、运算符

1.算术运算符

加(+)、减(-)、乘(*)、除(/)、取余(%)

用于数值计算,包括加(+)、减(-)、乘()、除(/)、取余(%)和自增(++)、自减(–)等运算符。

这个其实大家都不陌生,从小学开始我们就已经学习了加(+)、减(-)、乘()、除(/)这些运算符了。

下面我们先看看在C语言中如何使用加(+)、减(-)、乘(*)、除(/)这些运算符吧。

举一个简单的例子:

#include <stdio.h>
int main(void)
{
  int a = 1;
  int b = 2;
  printf("a+b = %d\n", a + b);
  printf("a-b = %d\n", a - b);
  printf("a*b = %d\n", a * b);
  printf("a/b = %d\n", a / b);
  return 0;
}

运行结果:

image.png

大家可以看到运行结果这个其实和我们从小学到的但是一样的,只是这里的除(/)运算大家可能会觉得有些疑惑,下面我就带大家来一起解决一下这个问题吧。

C语言中的除法(/)

下面我们多举几个例子:

#include <stdio.h>
int main(void)
{
  int a = 3;
  int b = 2;
  printf("a/b = %d\n", a / b);
  a = 4;
  printf("a/b = %d\n", a / b);
  a = 5;
  printf("a/b = %d\n", a / b);
  return 0;
}

运行结果:

image.png

我们可以看到有的结果是符合我们的思维的,有的是不符合我们的思维的。

我们把int换成float再来看看吧。

#include <stdio.h>
int main(void)
{
  float a = 3;
  float b = 2;
  printf("a/b = %f\n", a / b);
  a = 4;
  printf("a/b = %f\n", a / b);
  a = 5;
  printf("a/b = %f\n", a / b);
  return 0;
}

运行结果:

image.png

这次换成float后就完全符合我们的预期了。那么这是什么原因导致这样的结果呢?


问题所在:

在C语言中,整数类型(int)是一种不带小数部分的数值类型,因此在整数之间进行算术运算时,结果也是整数,如果希望得到小数部分,需要将其中一个操作数或结果转化为浮点数类型(float)。


在上述代码中,由于变量a和b都是float类型,在进行算数运算(如a/b)时结果也是float类型,因此结果带有小数部分。如果将变量a和b定义为int类型,那么在进行整数之间的算数运算时结果也是整数,小数部分会被舍去。因此在需求浮点数的场合,需要使用浮点数类型来进行运算。


使用int类型时我们经常使用 除(/)、取余(%)来进行取整和取余操作。

比如5/4 = 1…1

代码中的表现:

#include <stdio.h>
int main(void)
{
  int a = 5;
  int b = 4;
  printf("a/b 取整: %d\n", a / b);
  printf("a%b 取整: %d\n", a % b);
  return 0;
}

运行效果:

image.png

(哈哈哈其实简单的运算符也包含很多知识点哦)


自增(++)、自减(–)

C语言中的自加(++)和自减(–)是一种非常方便的表达式,在程序中常常被用来增加或者减少变量的值,特别是当我们需要循环、遍历等操作时,这两个运算符非常常用。


自加运算符(++)是用于增加变量值的运算符,它可以将变量的值增加1。自减运算符(–)是用于减少变量值的运算符,它可以将变量的值减少1。这两个运算符可以应用于变量、数组元素、指针等。


下面是一个简单的例子:

#include <stdio.h>
int main() 
{
    int a = 10;
    int b;
    printf("a = %d\n", a);
    b = a++; // 后增加
    printf("a++ = %d, b = %d\n", a, b);
    a = 10;
    printf("a = %d\n", a);
    b = ++a; // 先增加
    printf("++a = %d, b = %d\n", a, b);
    return 0;
}

运行结果:

image.png

2.关系运算符

关系运算符:用于比较两个数值的大小关系,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等运算符。关系运算符的结果为真(非零)或假(0)。

C语言中的应用:

#include <stdio.h>
int main(void)
{
  int a = 5;
  int b = 3;
  printf("%d\n", a > b);
  printf("%d\n", a < b);
  return 0;
}

运行效果:

image.png

我们可以看到a>b为真,关系运算符的结果就为1,a < b为假,关系运算符的结果就为0。其他的关系运算符也是这样的,大家可以下去自己多多尝试。


3.逻辑运算符

用于组合和改变布尔型数据的值,包括与(&&)、或(||)、非(!)运算符。

这一部分我们在讲到后面的控制语句在给大家详细进行讲解。


4.运算符优先级

什么叫运算符优先级呢,运算符优先级其实就是我们小时候经常会说的先乘除后加减。C语言中存在那么多的运算符肯定也有一个运算符的优先级了。

这里我们看到这一张表就行了,我们只需要记住经常会使用到的就可以了,其他的可以查表进行判断。

image.png

二、表达式

C语言的表达式由操作数和操作符组成的式子,它的值可以是一个常量、变量、函数调用、或者由多个操作数和操作符组合的复杂表达式。C语言表达式的执行过程就是操作数之间进行运算、操作符之间进行相应运算的过程。


除了基本的算数操作符,C语言还提供了多种表达式,如逻辑表达式、位运算表达式、关系表达式等。表达式也可以包含圆括号(()),以改变操作符的优先级。


在C语言中,我们可以使用表达式来完成各种操作,如赋值、比较、位运算、逻辑运算等。常见的操作符包括算数运算符(+、-、*、/、%等)、赋值运算符(=、+=、-=等)、关系运算符(<、<=、>、>=等)、逻辑运算符(&&、||、!等)和条件运算符(?:)等。


算术表达式:

#include <stdio.h>
int main() 
{
    int a = 10, b = 20, c;
    c = a + b;
    printf("a + b = %d\n", c);
    c = a - b;
    printf("a - b = %d\n", c);
    c = a * b;
    printf("a * b = %d\n", c);
    c = a / b;
    printf("a / b = %d\n", c);
    c = a % b;
    printf("a %% b = %d\n", c);
    return 0;
}

我们定义了三个变量a、b、c,并对变量a和b赋值分别为10和20。接下来,我们使用表达式对这些变量进行加、减、乘和除等运算,并将结果输出到控制台。

运行效果:

image.png

关系表达式:

#include <stdio.h>
int main() 
{
    int a = 10, b = 20;
    if (a == b) {
        printf("a 等于 b\n");
    } else {
        printf("a 不等于 b\n");
    }
    if (a < b) {
        printf("a 小于 b\n");
    } else {
        printf("a 大于或等于 b\n");
    }
    if (a > b) {
        printf("a 大于 b\n");
    } else {
        printf("a 小于或等于 b\n");
    }
    if (a != b) {
        printf("a 不等于 b\n");
    } else {
        printf("a 等于 b\n");
    }
    if (a <= b) {
        printf("a 小于或等于 b\n");
    } else {
        printf("a 大于 b\n");
    }
    if (a >= b) {
        printf("a 大于或等于 b\n");
    } else {
        printf("a 小于 b\n");
    }
    return 0;
}

运行效果:

image.png

逻辑表达式:

#include <stdio.h>
int main() 
{
    int a = 5, b = 20, c = 0;
    if (a && b) {
        printf("a && b 为真\n");
    } else {
        printf("a && b 为假\n");
    }
    if (a || b) {
        printf("a || b 为真\n");
    } else {
        printf("a || b 为假\n");
    }
}

运行效果:

image.png

总结

学习完这篇文章后,需要进行对应的代码练习,要不然可是会忘记的哦。

相关文章
|
2月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
140 2
|
5月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
1月前
|
C语言
【C语言】条件运算符详解 - 《 A ? B : C 》
条件运算符(也称为三元运算符)是C语言中唯一的三元运算符。它通常用于替代简单的 `if-else` 语句。
126 6
|
4月前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
207 87
|
4月前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
225 72
|
2月前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
42 4
|
3月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
49 3
|
3月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。
|
4月前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
71 4
|
4月前
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
131 10