首页 > 其他分享 >C语言运算符和表达式

C语言运算符和表达式

时间:2024-10-16 22:52:34浏览次数:3  
标签:-- 左值 C语言 运算符 int 表达式

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;
}

标签:--,左值,C语言,运算符,int,表达式
From: https://blog.csdn.net/xinfanyyds/article/details/142993427

相关文章

  • PTA L1系列题解(C语言)(L1_073 -- L1_080)
    L1-073人与神题目内容:L1-073人与神-团体程序设计天梯赛-练习集(pintia.cn)跨界大神L.PeterDeutsch有一句名言:“Toiterateishuman,torecursedivine.”(迭代的是人,递归的是神)。本题就请你直接在屏幕上输出这句话。输入格式:本题没有输入。输出格式:在一行中输......
  • C语言基础分享-初始C语言
    1.1什么是C语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的国际标准:ANSICC89C90C99C11...其中C89C90为主流C语言是一门面向过程的计算机编程语言。C语言是编译型语言。编译器主要有Clang、GCC、WIN-TC、MSVC、TurboC等。1.2第一个C语言程序点击查......
  • 叉积法判断三点共线+重载运算符
    https://ac.nowcoder.com/acm/contest/92687/G#include<bits/stdc++.h>#defineendl'\n'#defineintlonglong#definelowbit(x)(x&-x)usingnamespacestd;constdoublepi=acos(-1);typedefpair<int,int>pii;piioperator-(piia,......
  • ②C语言数据类型与变量
    数据类型1数据类型概要整形类型描述整数,字符类型描述字符,浮点型类型描述小数。特殊说明:布尔类型需要拥有的头文件(<stdbool.h)布尔类型的变量的取值是:true/false#definebool_Bool#definefalse0#definetrue1实例_Boolflag=true;if(flag)prin......
  • 鹏哥C语言79-81---野指针+指针运算
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>//----------------------------------------------------------------------------------------------------------3.野指针//野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限......
  • Java基础语法-运算符
    运算符Java语言支持如下运算符:算术运算符:+,-,,/,%,++,--赋值运算符:=关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>(了解!!!)条件运算符:?:扩展赋值运算符:+=,-=,*=,/=//二元运算符inta=10;intb=20;intc=25;intd......
  • 算法-中缀转后缀表达式(C++)
    因为操作数在后缀表达式中它们的顺序与中缀表达式一致,所以操作数不需要进行特殊处理,所以遇到数字就输出,遇到符号就经过处理再输出所以需要用一个存储结构存符号为什么用栈存储:要利用后进先出的特性出栈也就是加入到后缀表达式中,一部分一部分处理,处理完一部分,要处理他邻近的......
  • c语言分支和循环(上)
    1.if语句if语句后面不加分号,默认情况下if和else语句后面只能跟一条语句,如果要使用多条语句,可以用{}将想要多条表达的式子放进去#include<stdio.h>intmain(){intnum=0;//输入scanf("%d",&num);//一定别忘了取地址//判断和输出if(num%2==1)//......
  • C语言手撕实战代码_线索二叉树_先序中序线索二叉树_树的先根遍历_后根遍历_树的度_孩
    文章目录1.设计算法构造一棵先序线索二叉树2.先序线索二叉树的先序遍历算法3.设计算法构造一棵中序线索二叉树4.遍历中序线索二叉树5.树的先根遍历和后根遍历6.树T的叶子结点个数7.计算一棵以孩子兄弟表示的树T的度,该算法的时间复杂度为O(n)8.计算树孩子兄弟链表表示的T......
  • C语言中的“宏”以及宏的使用
    在C语言中,宏是一种预处理器指令,主要通过 #define 来定义。宏可以在编译时进行文本替换,使代码更加简洁和可读。如有问题,请指正!以下是C语言宏的几个主要应用场景:1.常量定义使用宏定义常量,可以避免在代码中出现魔法数字,使代码更加易于维护。#definePI3.14159floatra......