openhelp100 发表于 2021-3-16 17:25:47

西交《程序设计基础》faq(三)

西交《程序设计基础》FAQ(三)
第三章 C语言语句与结构化程序的三种基本结构
一、如何理解给变量赋初值、变量的初始化、赋值表达式这三个不同的概念?
1)给变量赋初值:就是在定义变量的同时,或者变量定义之后给变量进行赋值。(包含了变量初始化这一层面)
例1:int i=0,j=0,k=0;
例2:int i,j,k;i=0;j=0;k=0
2)变量初始化:在变量定义的同时赋以初值的方法,称之为变量初始化。
例:int i=0,j=0,k=0;
但是在变量的初始化声明中不允许连续赋值。
例:int i=j=k=0; 这句是错误的。由于表达式i=j=k=0,可以理解为i=(j=(k=0)),显然,j和k变量还未声明变量类型,就要去赋值和接受赋值,显示是不合法的。
3)赋值表达式:由赋值运算符“=”连接的式子称之为赋值表达式。一般形式为:变量=表达式。赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。
例:
int i,j,k;
i=j=k=0;
因为表达式i=j=k=0 等价于 i=(j=(k=0))。因为i,j,k三个变量都已经预先声明为int型了,是合法的赋值运算,所以是正确的! 二、对赋值表达式和赋值语句有些迷糊,他们有很大的区别吗?
赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
下述语句是合法的: if((x=y+5)>0) z=x; 语句的功能是,若表达式x=y+5大于0则z=x。下述语句是非法的: if((x=y+5;)>0) z=x; 因为=y+5;是语句,不能出现在表达式中。三、为什么说int a=b=C=5是错误的?
这个问题涉及到在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。
在变量说明中,不允许连续给多个变量赋初值。所以 int a=b=C=5 必须写为 int a=5,b=5,C=5; 而赋值语句允许连续赋值。
本内容由易百网整理发布
网址 www.openhelp100.com
联系方式QQ 515224986
页: [1]
查看完整版本: 西交《程序设计基础》faq(三)