C语言运算符和表达式

发布于:2024-10-17 ⋅ 阅读:(2) ⋅ 点赞:(0)

1.C语言赋值运算符实例讲解

C 使用运算符(operator)来代表算术运算。例如,+运算符可以使它两侧的值加在一起。如果您觉得术语“运算符”听起来比较奇怪,那么请您记住那些东西总得有个名称。与其被称之为“那些东西”或“数学符号”,被称之为“运算符”似乎看起来更专业一些! 现在,除此之外,让我们再看一下其他的基本运算符。

赋值运算符

在 C 里,符号=不表示“相等”,而是一个赋值运算符。下面的语句是将2014赋给num的变量:

num = 2014;

也就是说,符号=的左边是一个变量名,右边是赋给该变量的值。符号=被称为赋值运算符(assignment operator)。再次强调不要把这行代码读做“num等于2014”,而应该读为“将值2014赋给变量num”。赋值运算符的动作是从右到左 

几个术语:数据对象左值右值操作数

数据对象”(data object)是泛指数据存储区的术语,数据存储区能用于保存值。例如:用于保存变量或数组的数据存储区是一个数据对象。

C 的术语左值(lvalue)指用于标识一个特定的数据对象的名字或表达式。例如:变量的名字是一个左值。所以对象指的是实际的数据存储,但是左值是用于识别或定位那个存储的标识符。

因为不是所有的对象都是可更改值的,所以C使用术语“可修改的左值”来表示那些可以被更改的对象。所以,赋值运算符的左值应该是一个可修改的左值。lvalue中的l确实是英文单词left的意思,因为可修改的左值可以用在赋值运算符的左边。

术语"右值"(rvalue)指的是能赋给可修改的左值的量。例如,下面的语句:num=2014;

这里是一个可修改的左值,2014是一个右值。您可能猜到rvalue中的r表示right。右值可以是常量、变量或者任何可以产生一个值的表达式。我们可以把变量理解为一个容器,放在左边当左值时,意思为保存、存放右边的值。所以,我们可以说=运算符的左操作数是可修改的左值。

2.C语言算数运算符实例讲解

C语言中算数运算符主要包括:加法+、减法-、乘法*、除法/、求模%、自增++、自减--。

自增++和自减--,是单目运算符,因为它们只需要一个操作数,加法+、减法-、乘法*、除法/、求模%,是双目运算符

自增++自减--又称为“增量运算符”(increment operator)完成简单的任务,如++,即将其操作数的值增加1。这个运算符以两种方式出现。在第一种方式中,++出现在它作用的变量的前面,这是前缀(prefix)模式;在第二种方式中,++出现在它作用的变量的后面,这是后缀(postfix)模式。这两种模式的区别在于值的增加这一动作发生的准确时间不同。对于前缀运算符,先执行自增或自减运算,再计算表达式的值;而后缀运算符,则先计算表达式的值,再执行自增或自减运算。自减--也是同样的道理。

我们举个例子来说明:

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

运行结果如下: 

5      4
4      3
3      2
2      1
1      0

3.C语言sizeof运算符

C语言有32个运算符,其中有些运算符比其他运算符要常用的多。我们前面已经讨论的那些是最常用的,现在我们将继续介绍几个比较有用的运算符。

关键字"sizeof" 经常被人误认为函数。


sizeof是C语言的32个关键字之一,并非“函数”(我们会后面介绍),也叫长度(求字节)运算符,sizeof是一种单目运算符,以字节为单位返回某操作数的大小,用来求某一类型变量的长度。其运算对象可以是任何数据类型变量

例子:

#include<stdio.h>
int main()
{
    int n=0;
    int intsize = sizeof(int);
    printf("int sizeof is %d bytes\n",intsize);
    return 0;
}

在32位操作系统下,运行结果如下:

int sizeof is 4 bytes

4.C语言逻辑运算符实例讲解

C语言中逻辑运算符包含逻辑与&&逻辑或||逻辑非!三种。其中逻辑与&&是双目运算符,即需要运算符两边都要有表达式,且两边表达式都为真,此表达式才为真;逻辑||也是双目运算符,要求左右两边的表达式只要有一个为真整体就为真。最后一个逻辑非!运算符是单目运算符,只需右边跟一个表达式,表示取反的意思,即原先真的取反则为假,原先假的取反则为真。

5.C语言?:条件运算符实例讲解 

下面给大家介绍一个三目运算符,即?:

首先介绍一个概念,所谓的“”是指这个运算符参与运算的对象个数

比如前面我们介绍了+、-、*、\等等运算符,这些需要两个数或者变量运算,所以就属于双目运算符;而++和--一个对象就可以组合,这种就是单目运算符,很好理解,那么今天所提到的三目,当然就是有三个对象参与运算了!这可是C语言当中唯一一个三目运算符,它就是选择运算符

它的一般形式是通过?和:两个符号组合而成的,一般形式如下:

表达式1?表达式2:表达式3

这什么意思呢?首先计算表达式1的值,看看是真还是假,也就是成立还是不成立,如果表达式1成立,那么这个三目运算符整体的值就是表达式2的值,否则(也就是表达式1不成立),这个三目运算符整体的值就是表达式3的值。怎么样,看明白了吗?

下面举个例子说明一下:

2>1?10:20

这个表达式整体的值是几呢?答案应该是10,因为2>1成立,因此它的值就是表达式2的值,也就是10。

题目练习: 拆分位数

拆分一个三位数的个位、十位、百位

输入格式: 输入一个三位数

输出格式: 逆序输出这个三位数,输出个位、十位、百位,三个数字,用空格分开

 参考代码:

#include<stdio.h>
int main()
{
        int a,b,c,x;    //x=365
        scanf("%d",&x);
        a = x%10;       //365/10=36余5,所以365%10=5
        b = (x%100)/10; //365/100=3余65,所以x%100=65,65/10=6.5,输出“%d”取整数所以b=6
        c = x/100;      //365/100=3.65,输出“%d”取整数所以c=3
        printf("%d %d %d\n",a,b,c);
        return 0;
}