社区
C++ 语言
帖子详情
求值顺序
gueangyik
2009-09-20 01:46:48
假如
f1()*f2()
这时候先调用f1()还是f2()啊~~~2个函数都涉及到同一个对象,而且改变其值~~
先调用哪个对结果有影响~~~?怎么解决??
...全文
63
6
打赏
收藏
求值顺序
假如 f1()*f2() 这时候先调用f1()还是f2()啊~~~2个函数都涉及到同一个对象,而且改变其值~~ 先调用哪个对结果有影响~~~?怎么解决??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
猫已经找不回了
2009-09-20
打赏
举报
回复
[Quote=引用楼主 gueangyik 的回复:]
假如
f1()*f2()
这时候先调用f1()还是f2()啊~~~2个函数都涉及到同一个对象,而且改变其值~~
先调用哪个对结果有影响~~~?怎么解决??
[/Quote]
有的是从右到左
mstlq
2009-09-20
打赏
举报
回复
[Quote=引用 3 楼 jicy_luo 的回复:]
试试不就知道了,在f1()和f2()中添加打印语句,看先输出那个知道了!
不过,建议最好还是不使用或少使用全局数据!
[/Quote]
试了也没什么意义,这个编译器的结果是从左到右,那个编译器的结果是从右到左,没个定则,移植性不高啊
zhongjiekangping
2009-09-20
打赏
举报
回复
编译器做了很多的事情啊
luojc714
2009-09-20
打赏
举报
回复
试试不就知道了,在f1()和f2()中添加打印语句,看先输出那个知道了!
不过,建议最好还是不使用或少使用全局数据!
lufy_sun
2009-09-20
打赏
举报
回复
结果值依赖编译器。
楼上的正解。
mstlq
2009-09-20
打赏
举报
回复
先调用哪个是未定的……
依赖于编译器的具体实现……
解决方案,写成下面两种形式之一
tmp1=f1();
tmp2=f2();
tmp1*tmp2;
或者
tmp2=f2();
tmp1=f1();
tmp1*tmp2;
C++运算表达式
求值
顺序
求值
顺序
优先级虽然规定了运算对象的组合方式,但是没有说明运算对象按照什么
顺序
求值
。例如: int i=f1()*f2();//我们不知道先求f1还是先求f2,倘若f1和f2指向并修改了同一对象,则会引发错误。 例如:int i=0;...
C语言
求值
顺序
1. 运算
顺序
和
求值
顺序
运算
顺序
: 根据运算符号的优先级(结合性)来进行
求值
的过程
求值
顺序
: 例如 D = A + B + C, 运算
顺序
是 A 先加 B 再加 C, 但是c语言并没有规定是先计算A的值还是B的值还是C的值; 这...
函数参数
求值
顺序
和默认值
函数参数
求值
顺序
: 当一个函数带有多个参数时,C++语言没有规定在函数调用时参数的
求值
顺序
。编译器根据代码进行优化的需要规定对实参的
求值
顺序
,可能是从左至右,也可能是从右至左。 如果实参表达式中带有副作用...
C++ - 表达式
求值
顺序
在C++里,表达式
求值
顺序
一直是一个大坑,这是由于为了给编译器更大的优化空间,C++对表达式的
求值
做了许多非常灵活的规定(其实就是不规定,编译器愿意怎么实现都可以)。这些灵活的规定也给C++带来了许多在其它...
运算符
求值
顺序
有四种运算符明确声明了运算对象的
求值
顺序
:&&、||、?:、,。 1. 与运算符&&(短路
求值
) 先求左侧运算对象,左侧为真时再求右侧运算对象。 2. 或运算符||(短路
求值
) 和&&运算符类似,先求左侧运算对象...
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章