找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 706|回复: 2

表达式都有值,那么都会进行求值吗?

[复制链接]

4

主题

12

回帖

105

积分

注册会员

积分
105
发表于 2023-12-31 12:08:16 | 显示全部楼层 |阅读模式
int a=1, b=2;  这个声明语句中的1和2都是表达式,那表达式1和表达式2求值的结果又是1和2?   再将这个求值的结果1和2用来初始化变量a和b,是这样理解吗?(总感觉哪里怪怪的)

a=b; 那么此时的表达式a应该不会求值了吧?不然就变量了1=2;

&a;  那么此时的表达式a应该也不会求值了吧?不然也变成了&1;

是这样理解不?


344

主题

255

回帖

2666

积分

管理员

积分
2666
发表于 2023-12-31 12:43:45 | 显示全部楼层
在C语言里,声明是声明,语句是语句,没有“声明语句“。

在变量a和b的初始化器里,1和2都是符号,是代表数字的符号。你认得它们是整数,但编译器不认得。编译器要将这些代表数字的符号转换为真正的数字(二进制数字),这就是对表达式1和2的求值。这样说你就不会觉得怪怪的了吧。

表达式的作用是多方面的,有时候用来指示一个对象(变量)或者函数,有时候用来求值。表达式 a = b 中的a不求值,只用来指示变量。

4

主题

12

回帖

105

积分

注册会员

积分
105
 楼主| 发表于 2023-12-31 13:50:45 | 显示全部楼层
本帖最后由 xiaocai 于 2023-12-31 17:07 编辑

谢谢李大侠指正

看样子用于&和sizeof 都是不求值了,而且数组如果求值,就要转变成指针了

*p;  //p是指针变量,此时 指针变量p是表达式,求值得到指针,再进行*运算作为整个表达式的值,这样理解?




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-7-27 22:33 , Processed in 0.232405 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表