C语言程序设计 - 赋值运算符与赋值表达式
- 格式:pdf
- 大小:994.93 KB
- 文档页数:10
c语言运算符及其表达式(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--C语言的数据类型运算符表达式1.基本数据类型基本数据类型最主要的特点是,其值不可以再分解为其它类型。
也就是说,基本数据类型是自我说明的。
2.构造数据类型构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。
也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。
每个“成员”都是一个基本数据类型或又是一个构造类型。
在C语言中,构造类型有以下几种:·数组类型·结构类型·联合类型3.指针类型指针是一种特殊的,同时又是具有重要作用的数据类型。
其值用来表示某个量在内存储器中的地址。
虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。
4.空类型在调用函数值时,通常应向调用者返回一个函数值。
这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明,例如在例题中给出的max函数定义中,函数头为: int max(int a,int b);其中“int ”类型说明符即表示该函数的返回值为整型量。
又如在例题中,使用了库函数 sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句s=sin (x);中,s 也必须是双精度浮点型,以便与sin函数的返回值一致。
所以在说明部分,把s说明为双精度浮点型。
但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”。
其类型说明符为void。
在第五章函数中还要详细介绍。
在本章中,我们先介绍基本数据类型中的整型、浮点型和字符型。
其余类型在以后各章中陆续介绍。
对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。
在程序执行过程中,其值不发生改变的量称为常量,取值可变的量称为变量。
它们可与数据类型结合起来分类。
例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。
C/C++程序设计第2 章数据类型及表达式计算机学院C/C++程序设计课程组C/C++程序设计第2章主要内容本章主要介绍:基本数据类型和存储类型的说明方法,以及基本运算符的运算规则和表达式的构成方法,为后续章节的学习奠定一个基础。
C/C++程序设计2.1 C 语言的数据类型使用高级语言编写程序,主要工作有两项:一是描述数据,二是描述数据加工的方法。
数据类型图 2.1C 语言的数据类型基本类型整型实型字符型带符号长整型(简称长整型)带符号整型无符号整型无符号整型无符号短整型无符号长整型单精度型双精度型空类型构造类型指针类型枚举类型数组类型结构体类型共用体类型C/C++程序设计2.2 常量常量是程序运行过程中其值不发生变化的数据。
2.2.1 整型常量表2.1 整型数据的表示方式2.2.2 实型常量3.14、.9999、-3.14159、834.、–0.666 、6.89E-52.2.3 字符常量’x’,’a’,’A’,’b’,’$’,’#’ ,printf("\tab\rcd\n\’ef\\g");2.2.4 符号常量#define 符号常量字符串#define PI 3.14159C/C++程序设计【例2.1】求一个圆柱体体积,用符号常量代替π。
#include <stdio.h>#define PI 3.14159 /*定义PI为符号常量*/void main(){float r,h,v;scanf("%f,%f",&r,&h);v=PI*r*r*h; /* PI相当于3.14159,参与运算*/printf("Volume=%f",v);}运行时输入:3,2↙运行结果为: Volume=56.548618C/C++程序设计2.2.5 字符串常量"\tab\rcd\n\’ef\\g“"I am a student" 、"x"、""注意:’\0’和’0’不同,’\0’是编码为0的字符,而’0’则是数字0,其编码为48。
C语⾔运算符与表达式1 概论计算机内存中的数据可以通过变量,常量来表⽰和存储,那么这些数据如何运算?C语⾔中提供了⼤量(34种)的运算符可以⽤来完成数据的算术,赋值,逻辑,关系,条件判断以及⾃增⾃减运算和基于⼆进制的位运算,同时提供了跨平台的⽤于数据格式化输⼊输出的函数printf()和scanf(),⽽实际上计算机需要去完成的任务正是读取输⼊的数据,根据业务逻辑进⾏计算之后将结果输出。
在学习为了完成数据的复杂计算⽽⽣的那些运算符之前,需要先明⽩⼏个概念:操作数:参与计算的数据,可以是之前学过的整数,浮点数和字符以及以后学的。
运算符:也就是执⾏某项计算的符号,例如+ - * / % >等等表达式:操作数和运算符的组合,例如 x+y;⽽运算符通常是有优先级和结合性的特性:优先级:以算术运算符为例⼦,通常是先乘除后加减,可以使⽤()提⾼优先级结合性:继续以算术运算符为例⼦,当优先级相同时(表达式中只有同级别的运算符),通常是从左到右开始执⾏的。
但是实际⽣产和⽣活中通常都是各种运算和后⾯学习的流程控制语句联合嵌套使⽤的,是现实⽣活中的业务复杂度决定的。
2 算术运算符算术运算符主要是⽤来完成数学运算的,C语⾔⽀持数学上的加减乘除四则混合运算,同时还有取模运算(%),也就是求被除数/除数=商数…余数,需要指出的是只有整数才能求模。
下⾯程序案例演⽰了算术运算符使⽤过程中需要注意的事项:1 整数和整数运算,结果是整数,尤其是在使⽤除法时需要注意会舍去⼩数部分2 当有多种数据类型(int double char)参与运算时,运算结果的数据类型是参与运算的最⼤的数据类型,这样保持数据运算的准确性。
#include <stdio.h>/*算术运算符 + - * -@author Tony 186********@@since 20160526 10:13*/void alg_operator() {printf("%d\n", 1 + 3);printf("%d\n", -3); //加减运算符有时候会被当做正负数printf("%d\n", 5 / 2.0);//运算的结果是2.5 但是printf在打印输出时不会做强制类型转换,因此这⾥解析错误,结果为0printf("%d\n", (int)(3.5 * 2));// 当参与运算的类型不⼀致时,如果想要指定类型的结果,可以通过强制类型转换来实现printf("3/2=%d", 3 / 2); //两个整数相除⼩数部分被舍去}求模运算的结果与被除数相同,如果被除数是正数,那么取余的结果也是正数,反之也成⽴。
c语⾔-数据类型、运算符与表达式⼀、数据类型1、概念(1)标识符1.定义:⽤来标记常量、变量、函数及⽂件名字的字符序列。
2.构成规则:只能由数字、字母、下划线三部分组成,且不能以数字开头,并且严格区别⼤⼩写,不能定义为系统中存在的关键字。
(2)关键字c语⾔中具有特定含义、专门⽤作语⾔特定成分的⼀类标识符注:在C语⾔中,所有的关键字都有固定的意义,不能⽤作其它,且所有的关键字都必须⼩写(3)c的数据类型数据是操作的对象,数据类型是指数据的内在表现形式(代码、存储、运算)(4)常量和变量1. 常量【1】常量:在程序运⾏过程中,其值不能被改变的量 常量区分为不同类型(表⽰形式),如:12、1.0、‘a’【2】符号常量:⽤⼀个标识符代表的⼀个常量定义⽅法:#define 标识符常量#define PRICE 30#include <stdio.h>void main(){int num,total;num = 10;total = num * PRICE;printf("total = %d",total);}2. 变量【1】变量:其值是可以改变的量,它⽤标识符(变量名)来表⽰,在内存中占据⼀定的存储单元变量的定义⽅法:类型符标识符注意事项:<1>见名知意 <2>先定义后使⽤ <3>习惯上,符号常量名⽤⼤写,变量名⽤⼩写,以⽰区别【2】变量赋初值变量先定义,后使⽤,⼀般放在函数开头变量初始化:可以在定义时赋初值2、整型数据(1)整型常量1. 各种进制的整数表⽰⽅法⼗进制整数:由数字0~9和正负号表⽰. 如 123,-456,0⼋进制整数:由数字0开头,后跟数字0~7表⽰. 如 0123,011⼗六进制整数:由0x开头,后跟0~9,a~f,A~F表⽰. 如 0x123,0xff2. 整型常量的类型【1】整型常量的值在-32768~+32767范围内,编译器认为是int类型【2】整型常量的值超过上述范围,⽽在-2147483648 ~ +2147483647范围内,编译器认为是long类型【3】当系统定义short int与int占内存长度相同,则两种类型常量均可以赋给 int和short int型变量【4】在整型常量后⾯加⼤写L或⼩写l,则告诉编译器,把该整型常量作为long类型处理。
无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。
运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。
大多数运算符都是二目运算符,即运算符位于两个表达式之间。
单目运算符的意思是运算符作用于单个表达式。
(具体什么是表达式下一节再说)一、赋值运算符赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。
符号为‘=’。
这里并不是等于的意思,只是赋值,等于用‘==’表示。
注意:赋值语句左边的变量在程序的其他地方必须要声明。
得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。
常数只能作为右值。
例如:count=5;total1=total2=0;第一个赋值语句大家都能理解。
第二个赋值语句的意思是把0同时赋值给两个变量。
这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。
这样它先total2=0;然后total1=total2;那么我们这样行不行呢?(total1=total2)=0;这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。
二、算术运算符在C语言中有两个单目和五个双目运算符。
符号功能+ 单目正- 单目负* 乘法/ 除法% 取模+ 加法- 减法下面是一些赋值语句的例子,在赋值运算符右侧的表达式中就使用了上面的算术运算符:Area=Height*Width;num=num1+num2/num3-num4;运算符也有个运算顺序问题,先算乘除再算加减。
单目正和单目负最先运算。
取模运算符(%)用于计算两个整数相除所得的余数。
例如:a=7%4;最终a的结果是3,因为7%4的余数是3。
那么有人要问了,我要想求它们的商怎么办呢?b=7/4;这样b就是它们的商了,应该是1。
也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。
2.1算术运算和赋值运算2.1.1算术运算符与算术表达式运算符是表示某种操作的符号,操作的对象叫操作数,用运算符把操作数连接起来形成一个有意义的式子叫表达式。
C/C++语言为了加强对数据的表达,处理和操作能力,提供了大量的运算符和丰富的表达式类型,其中最常用的是算术运算符,多数程序都要进行算术运算。
1.C/C++语言提供了如下算术运算符:+(加法运算符)-(减法运算符)*(乘法运算符)/(除法运算符)%(求余运算符)两个整数相除结果还是整数,如8/3结果为2。
如果参加运算的两个数中有一个是实型,则结果为double型。
求余运算符要求%两侧都是整型数据,表达式x%y的结果为两数相除后的余数,如果x 能被y整除,则结果为零。
求余运算符不能应用到float或double型。
2.算术表达式的计算用算术运算符把常量、变量、函数等运算对象连接起来,称为算术表达式,如a+b*c-2+’a’是一个合法的算术表达式,表达式的结果为一个算术值。
运算符都有优先级和结合性,因此在求表达式的值时,要按照优先级的高低依次计算,如果一个运算量两侧运算符优先级相同,则按规定的结合方向进行。
算术运算符的优先级与代数中相同,即先乘除,后加减。
结合性是从左到右,如当表达式中有多个加法或减法,则按从左到右的顺序求值。
算术运算符的优先级见表2-3。
表2-3算术运算符的优先级运算符求值顺序*,/或%先求值,如果有多个,则从左到右求值+或-其次求值,如果有多个,则从左到右求值编写程序时,应能将代数表达式用正确的算术表达式表示出来。
例如:(1)求三个数的算术平均值代数表达式:ave=3cba++算术表达式:ave=(a+b+c)/3这里必须使用括号改变运算的次序,如果不使用括号,根据运算符的优先级a+b+c/3的计算结果为a+b+3c(2)根据三角形三边计算三角形面积代数表达式:))()((c s b s a s s ---算术表达式:sqrt(s*(s-a)*(s-b)*(s-c))表达式中使用开平方根函数sqrt(),使用函数时后面必须使用一对括号,把所有参数括进去,括号可以嵌套,但要保证配对正确。
C语言程序设计
第2章数据类型、运算符与表达式
——算术运算符与算术表达式
王小银
C语言程序设计
C 运算符算术运算符:+, -, *, /, %, ++, -- 关系运算符:<, <=, ==, >, >=, != 逻辑运算符:!, &&, ||
位运算符:<<, >>, ~, |,^,&
赋值运算符:= 及其扩展
条件运算符:? :
逗号运算符:,
指针运算符:*,&
求字节数:sizeof( )
强制类型转换:(类型)
分量运算符:. ,->
下标运算符:[ ]
C语言中的运算符
学习运算符应掌握内容
C语言程序设计
☐运算符功能
☐与运算量关系
要求运算量个数:单目、双目、三目
要求运算量类型
☐运算符优先级别:同一个表达式中不同运算符进行运算时的先后次序
☐结合方向:左结合性与右结合性。
当一个运算对象两侧的运算符的优先级别相同,则按规定的结合方向处理。
☐结果的类型
运算符说明举例+ 加法运算符或正值运算符3+5,-5 - 减法运算符或负值运算符8-6,-3.6 * 乘法运算符3*5
/ 除法运算符5/3
% 取模运算符(或称求余运算符)7%4
++ 自增运算符i++
-- 自减运算符--j
#include <stdio.h> main() {
float a,b;
a=1/5; b=1.0/5
printf (“a=%f, b=%f \n”, a, b ); }
输出: a=0.000000, b=0.200000 注意:两整数相除,结果为整数
例: 18%5 = -7%3 = 7%-3 = 5%1 = 5.5%4 =
3 -1 1 0 ( )
%要求两侧均为整型数据
自增和自减运算符
C语言程序设计⏹作用:使变量值加1或减1,常用于循环语句中
⏹种类:
前置,形式如++i, --i,
先执行i+1或 i-1,再使用i值。
后置,形式如i++,i--,
先使用i值,再执行i+1或i-1。
⏹注意:只能用于变量,不能用于常量和表达式
C 语言程序设计 #include <stdio.h> void main() {
int i=3, j=10, m, n, p, q; m=++i; n=i++; p=--j; q=j--;
printf (” i=%d, m=%d, n=%d\n”, i, m, n ); printf (” j=%d, p=%d, q=%d\n”, j, p, q ); }
运行结果为:
i=5, m=4, n=4 j=8, p=9, q=9
自增和自减运算符举例
自增和自减运算符使用注意
C语言程序设计•自增、自减运算符只能用于变量,而不能用于常量或表达式,如5++或(a+b)++都是不合法的。
•++和—的结合方向是“自右向左”。
例如:j=-i++。
•自增、自减运算符常用于循环语句中,使循环变量自动加1或减1;也用于指针变量,使指针变量指向下一个内存地址。
C语言程序设计谢谢大家!。