打印
[技术问答]

C语言赋值语句

[复制链接]
4406|62
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
classroom|  楼主 | 2023-5-25 11:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:

  变量=表达式;


  赋值语句的功能和特点都与赋值表达式相同。 它是程序中使用最多的语句之一。


  在赋值语句的使用中需要注意以下几点。


  1) 由于在赋值符“=”右边的表达式也可以又是一个赋值表达式。因此,下述形式


  变量=(变量=表达式);

  是成立的,从而形成嵌套的情形。


  其展开之后的一般形式为:

  变量=变量=…=表达式;


  例如:



view plaincopy to clipboardprint?
a=b=c=d=e=5;  


  按照赋值运算符的右接合性,因此实际上等效于:

  e=5;

  d=e;

  c=d;

  b=c;

  a=b;




  2) 注意在变量说明中给变量赋初值和赋值语句的区别。


  给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如:



view plaincopy to clipboardprint?
int a=5,b,c;  


  3) 在变量说明中,不允许连续给多个变量赋初值。如下述说明是错误的:




view plaincopy to clipboardprint?
int a=b=c=5;  


  必须写为




view plaincopy to clipboardprint?
int a=5,b=5,c=5;  


  而赋值语句允许连续赋值。


  4) 注意赋值表达式和赋值语句的区别。


  赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。下述语句是合法的:



view plaincopy to clipboardprint?
if((x=y+5)>0) z=x;  


  语句的功能是,若表达式x=y+5大于0则z=x。


  下述语句是非法的:



view plaincopy to clipboardprint?
if((x=y+5;)>0) z=x;  


  因为x=y+5;是语句,不能出现在表达式中。

使用特权

评论回复
沙发
tpgf| | 2024-3-4 17:05 | 只看该作者
语句出现在表达式中  会直接报错吗

使用特权

评论回复
板凳
ClarkLLOTP| | 2024-3-5 15:06 | 只看该作者
语句不可以出现在这里面吗

使用特权

评论回复
地板
ccook11| | 2024-3-5 21:11 | 只看该作者
C语言使用等号(=)作为赋值运算符。它表示将等号右侧的表达式的值赋给左侧的变量。

使用特权

评论回复
5
phoenixwhite| | 2024-3-5 22:10 | 只看该作者
C语言支持复合赋值操作符,如+=、-=、*=、/=等,这些可以简化代码并提高可读性。

使用特权

评论回复
6
晓伍| | 2024-3-6 18:08 | 只看该作者
为什么在赋值语句中最好不要使用自加和自减语句呢

使用特权

评论回复
7
八层楼| | 2024-3-6 18:42 | 只看该作者
运算符的优先级是不能被更改的是吗

使用特权

评论回复
8
观海| | 2024-3-6 19:16 | 只看该作者
有些操作是合 法的 但是对于计算的效率并不友好

使用特权

评论回复
9
guanjiaer| | 2024-3-6 19:50 | 只看该作者
经常容易把幅值语句和比较语句混淆

使用特权

评论回复
10
heimaojingzhang| | 2024-3-6 20:24 | 只看该作者
这已经算是最简单的赋值语句的操作了

使用特权

评论回复
11
药无尘| | 2024-3-7 17:17 | 只看该作者
我只会用等号

使用特权

评论回复
12
51xlf| | 2024-3-7 21:11 | 只看该作者
C语言提供了复合赋值运算符,如+=、-=、*=、/=等。这些运算符将计算表达式的值,并将结果赋给左侧的变量。

使用特权

评论回复
13
plsbackup| | 2024-3-7 23:26 | 只看该作者
赋值语句的左侧必须是一个可修改的左值,即一个变量或一个内存位置,这意味着你不能将一个常量赋值给一个常量。

使用特权

评论回复
14
deliahouse887| | 2024-3-9 20:14 | 只看该作者
C语言还提供了一些复合赋值运算符,如加等于(+=)、减等于(-=)等,它们允许你结合赋值和算术运算。

使用特权

评论回复
15
wengh2016| | 2024-3-10 08:37 | 只看该作者
不要将赋值运算符(=)与比较运算符(==)混淆。=用于赋值,而==用于比较两个值是否相等。

使用特权

评论回复
16
1988020566| | 2024-3-11 13:41 | 只看该作者
如果对动态分配的内存进行赋值,确保该内存区域尚未释放,否则会导致未定义行为。

使用特权

评论回复
17
benjaminka| | 2024-3-11 16:03 | 只看该作者
不能将值赋给常量。常量在编译时就被赋值,并且在程序运行期间不能更改。

使用特权

评论回复
18
abotomson| | 2024-3-11 18:09 | 只看该作者
在变量声明时进行初始化(如int a = 5;)与在后续的语句中对变量进行赋值是不同的。初始化时,可以使用逗号分隔多个变量,并给它们赋初值;而在赋值语句中,每个赋值操作必须以分号结尾。

使用特权

评论回复
19
backlugin| | 2024-3-11 20:19 | 只看该作者
遵循编码规范和最佳实践,以提高代码的可读性和可维护性。例如,使用有意义的变量名,添加注释,以及保持代码格式的一致性。

使用特权

评论回复
20
mollylawrence| | 2024-3-11 22:22 | 只看该作者
在多线程或多处理器环境中,对共享变量进行赋值时,要考虑并发访问带来的数据竞争和同步问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

418

主题

2030

帖子

1

粉丝