从零开始学 C 语言(六)

hi!这里是渔火。今天我们来学习C语言中的运算符和表达符。C语言中赋值运算有”=“、”+=“、”-=“、”/=“和”%=“等。用赋值运算符将运算对象连接而成的表达式称为赋值表达式。

最简单的赋值运算符就是”=“,它的作用就是将一个数值赋给一个变量,也可以将一个表达式的值赋给一个变量,接下来看一个给变量赋值的例子:

int a,b,c=3;

分析:定义a,b,c为整型变量,但只对c进行了赋值操作,c的值为3。

如果要对几个变量赋予同一个初值,我们应该这么写:

int a=3,b=3,c=3;

分析:表示a,b,c三个初值都是3。

在简单赋值运算符加上算术运算符就构成复合赋值运算符。

在 C语言中,赋值语句属于表达语句。赋值表达式是由赋值运算符将一个变量和一个表达式连接起来的式子所组成。它的一般形式为:变量=表达式。由于赋值表达式的作用是将一个表达式的值赋给一个变量,因此赋值表达式具有计算和赋值的双重功能。

注意:赋值运算符的左侧必须是一个变量。

接下来我们看几个赋值表达式:

v=4.0*PI*r*r*r/3.0;
a=8+(y=9);
c=(m+2)+(n+6); 

我们来了解下赋值表达式的执行过程:1、计算赋值运算符右侧表达式的值。2、将所计算的值给赋值运算符左侧的变量。区分赋值表达式和赋值语句的方法是:赋值表达式的末尾没有分号,而赋值语句的末尾必须有分号,在一个表达式中可以包含一个或多个赋值表达式,但绝不能包含赋值语句。

小白提示:

(1)如果”=“左右两边类型不同,系统会按照赋值类型转换的原则将右边的类型转换成左边的类型。

(2)赋值表达式的右边也可以是一个赋值表达式。

C语言里的基本算术运算符包括加、减、乘、除和求余等运算,其中加、减、乘、除和求余运算均为双目运算符,所谓双目运算符是指运算时需要两个操作数。

注意:求余运算要求参加运算的两个运算对象都必须是整型,其结果也是整型。求余运算结果的符号与第一个操作数符号相同。

C语言里有两个特殊运算符”++“和”–“。

(1)++自增运算符,为单目运算符,其功能是变量的值自加1。自增运算符有两种使用形式:

  • 前缀方式:用于变量前面,它是”先计算,后使用“,即先将x的值自加1,然后将x的值赋给变量a。
  • 后缀方式:用于变量后面,它是”先使用,后计算“,即先将x的值赋给变量a,然后再将x的值自加1。

(2)–自减运算符,为单目运算符,其功能是使变量的值减一,使用方法和自增运算符相似。

注意:自增和自减运算符的操作对象只能是一个简单变量,不能是常量或表达式。

C语言规定了运算符的优先级和结合性,单目运算符是右结合的,双目运算符是左结合的。算术运算符的优先级为:”++、–、-”>“*、/、%”>“、-”,即单目运算符的优先级高于双目运算符,双目运算符中*,/,%的优先级高于+、-。在优先级的系统的情况下,按规定的“结合性”处理。

算术表达式是由运算符、运算对象和括号链接起来的式子,运算对象可以是常量、变量和函数等。通常数学表达式均可写成C语言的算术表达式,但也有些数学表达式无法直接用C语言的算术表达式写出,此时需要调用C语言数学函数来实现。表达式计算后会得到一个确定的值和类型。

算术表达式使用注意:

1、表达式中的乘号不能省略,且表达式中的所有字符均应写在同一行上。

2、在表达式中还可以使用多层圆括号,但是要注意括号的配对。

接下来我们来看一道题目:输入一个3位的正整数,输出其反序数(如123的反序数为321)

代码如下:

#include<stdio.h>
//2023.1.29 渔火 Linux迷 www.linuxmi.com
int main()
{
	int num,a,b,c;
	num=789;
	printf("输入的3位数为:%d/n",num);
	a=num/100;
	b=(num-a*100)/10;
	c=num%10;
	printf("反序数是:%d%d%d/n",c,b,a);
						//2023.1.29 渔火 Linux迷 www.linuxmi.com
	return 0;
}

运行结果如下:


C语言中逗号“,”,也是一种运算符,称为逗号运算符,其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式的一般形式位:表达式1,表达式2,···,表达式n。

(1)逗号表达式的执行顺序是:从左到右以此计算每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。

(2)逗号运算符是双目运算符,其优先级最低,是左结合。

(3)并非所有出现逗号的地方都为逗号表达式。

接下来我们来看一个逗号表达式的应用:

#include<stdio.h>
//2023.1.29 渔火 Linux迷 www.linuxmi.com
int main()
{
	int x,y=8;
	float n=4;
	x=(y=y+2,y/n);
	printf("x=%d/n",x);
				//2023.1.29 渔火 Linux迷 www.linuxmi.com
	return 0;
}

运行结果如下:


运算符sizeof用于计算数据类型所占的字节数,它是一个单目运算符,优先级高于双目运算符,其格式如下:
(1)sizeof或sizeof表达式

(2)sizeif(数据类型名)

不同数据类型字数例子:

#include<stdio.h>
//2023.1.29 渔火 Linux迷 www.linuxmi.com
int main()
{
	printf("char类型占%d字节/n",sizeof(char));
	printf("short int类型%d字节/n",sizeof(short int));
	printf("int类型占%d字节/n",sizeof(int));
	printf("float类型占%d字节/n",sizeof(float));
	printf("double类型占%d字节/n",sizeof(double));
	
				//2023.1.29 渔火 Linux迷 www.linuxmi.com
	return 0;
}

运行结果如下:


求字节数运算例子:

#include<stdio.h>
//2023.1.29 渔火 Linux迷 www.linuxmi.com
int main()
{
	int x,y;
	x=sizeof(6+8.0);
	y=sizeof 6+8.0;
	printf("%d,%d,%d/n",x,y,sizeof("china"));
	
					//2023.1.29 渔火 Linux迷 www.linuxmi.com 
	return 0;
}

运行结果如下:


C语言规定,各种不同数据类型的数据在一起运算时,不同类型的数据要先转换成相同类型的数据才能进行转换。数据类型的转换可以分为自动转换和强制转换。
我们来看一个强制转换的例子:

#include<stdio.h>
//2023.1.29 渔火 Linux迷 www.linuxmi.com
int main()
{
	int x=7,y=8;
	float u;
	u=(float)(x+y)/2;
	printf("u=%f/n",u);
	
				//2023.1.29 渔火 Linux迷 www.linuxmi.com 
	return 0;
}

运行结果如下:


注意:(1)需强制类型转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转换。(2)强制类型转换是一种不安全的转换,如果是从高级类型的转换成低级类型,则会损失数据的精度。(3)强制类型转换并不该表表达式中变量的类型和值。

相关阅读:

  1. https://www.linuxmi.com/learn-c-language-from-scratch-1.html
  2. https://www.linuxmi.com/learn-c-language-from-scratch-2.html
  3. https://www.linuxmi.com/learn-c-language-from-scratch-3.html
  4. https://www.linuxmi.com/learn-c-language-from-scratch-4.html
  5. https://www.linuxmi.com/learn-c-language-from-scratch-5.html

The post 从零开始学 C 语言(六) first appeared on Linux迷.

版权声明:
作者:admin
链接:https://www.techfm.club/p/39392.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>