C语言_ch03_3_赋值语句和输入输出解读

2017-3-29

1

上一节我们学到了

数据类型

char,short,int,long,float,double
signed,unsigned
算术运算、自增/自减运算
类型转换
2017-3-29
2
3.1 顺序程序设计举例
3.2 数据的表现形式及其运算
3.3 C语句
3.3.1 C语句作用和分类
3.3.2 最基本的语句---赋值语句
3.4 数据的输入输出
3.4.1 输入输出举例
3.4.2 有关数据输出输出的概念
3.4.3 用printf函数输出数据
3.4.4 用scanf函数输入数据
3.4.5 字符数据的输入输出
内容
2017-3-29
3
3.3.1 C语句的作用和分类
C语句分为以下5类:
(1) 控制语句: if、switch、for、while、do…while、continue、break、return、goto等
(2) 函数调用语句
(3) 表达式语句
(4) 空语句
(5) 复合语句:花括号括起的多条语句
2017-3-29
4
空语句---常见的错误
; // 只有一个分号,什么也不做
int i = 0;
if (i<10);
{
printf("a");
i++;
}
下面程序的输出?
5
3.3.2 最基本的语句----赋值语句
例3.4 给出三角形的三边长,求三角形面积。
解题思路:假设给定的三个边符合构成三角形的条件
关键是找到求三角形面积的公式:
其中 s = (a+b+c) / 2
2017-3-29
6
#include 
#include 
int main()
{
float a, b, c, s, area;
scanf(“%f %f %f”, &a, &b, &c);
s = (a + b + c) / 2;
area = sqrt(s * (s-a) * (s-b) * (s-c));
printf("%.2f\n", area);
return 0;
}
输入:3个正实数,以空格分隔。3 4 5
输出:三角型面积,保留2位有效数字。6.00
2017-3-29
7
语法形式:
variablename = expression
a = 0
整个赋值表达式的结果
左侧变量的值
求解过程:
求“=”右侧的“表达式”的值
赋给左侧的变量
a = b = c = 0;
等价于a = (b = (c = 0));
赋值表达式
2017-3-29
8
复合的赋值运算符
下面两个语句是等价的
i = i + 2;
i += 2;
+、-、*、/、%、<>、&、^、|运算符都可以按此种方式处理
这种形式看起来更直观,而且执行效率一般也能更高一些
2017-3-29
9
赋值表达式举例
试分析各变量的值和整个表达式的值:
a = 5 + (c = 6)
a = (b=4) + (c=6)
a = (b = 3*4)
a += a -= a*a
如果a初值为12, 最终a的值为?
-264
printf("%d", a = b);
2017-3-29
10
左值(lvalue)
左值:可以出现在赋值运算符左侧,且值可以改变的量。
不能作为左值的值
常量 1=2;错
常变量 PI=3.14;错
算术表达式,如(a+b)=1;错
2017-3-29
11
VC6常见错误:error C2106"= : left operand must be l-value"
解释:赋值号('=')左边的操作数必须是一个左值。
原因:把常量(或表达式)放到了赋值号的左边。
例1:(a=b) = 3*4;
例2:const float PI;
PI = 3.14159;
error C2166: l-value specifies const object
2017-3-29
12
赋值语句
赋值表达式的最后加一个“;”
a = 1;
2017-3-29
13
初始化
在声明变量的同时赋以初值,也叫初始化。
int i = 0;
相当于
int i;
i = 0;
又例:int a, b, c = 5; printf(“%d %d %d”, a, b, c);输出?
不好的形式,a和b中是随机值
int a = b = c = 3; //错
int a=3,b=3,c=3; //对
2017-3-29

14

3.1 顺序程序设计举例

3.2 数据的表现形式及其运算

3.3 C语句

3.3.1 C语句作用和分类

3.3.2 最基本的语句---赋值语句

3.4 数据的输入输出

3.4.1 输入输出